Example #1
0
        /// <summary>
        /// Appelé lorsque la valeur de le propriété de dépendance <see cref="Attach"/> a changé.
        /// </summary>
        /// <param name="d">L'objet de dépendance où la propriété a changé.</param>
        /// <param name="e">Les <see cref="System.Windows.DependencyPropertyChangedEventArgs"/> contenant les données de l'évènement.</param>
        private static void OnAttachChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var cell = (DataGridCell)d;

            if (GetAttach(cell))
            {
                var triggers = Interaction.GetTriggers(cell);

                // Attacher
                var trigger = new System.Windows.Interactivity.EventTrigger("PreviewMouseLeftButtonDown");
                var action  = new DataGridCellSingleClickEditAction();

                trigger.Actions.Add(action);
                triggers.Add(trigger);
            }
            else
            {
                // Détacher
                var triggers      = Interaction.GetTriggers(cell);
                var eventTriggers = triggers.OfType <System.Windows.Interactivity.EventTrigger>()
                                    .Where(et => et.Actions.OfType <DataGridCellSingleClickEditAction>().Any()).ToArray();

                if (eventTriggers.Any())
                {
                    foreach (var et in eventTriggers)
                    {
                        et.Detach();
                        triggers.Remove(et);
                    }
                }
            }
        }
        private InvokableCallMethodAction _callMethodAction; // action used to invoke the method

        public InvokeMethodTimer()
        {
            // Create a CallMethodAction to handle invoking the method.  Use the InvokableCallMethodAction
            // class so that the Invoke method can be invoked programmatically.
            _callMethodAction = new InvokableCallMethodAction();

            // Bind the action's MethodName and TargetObject properties to the corresponding properties
            // on the InvokeMethodTimer object
            Binding b = new Binding("MethodName") { Source = this };
            BindingOperations.SetBinding(_callMethodAction, CallMethodAction.MethodNameProperty, b);

            b = new Binding("TargetObject") { Source = this };
            BindingOperations.SetBinding(_callMethodAction, CallMethodAction.TargetObjectProperty, b);

            // Add the CallMethodAction to the InvokeMethodTimer's triggers collection.  Without this,
            // invoking the action will fail silently.
            Interactivity.EventTrigger trigger = new Interactivity.EventTrigger();
            trigger.Actions.Add(_callMethodAction);
            Interactivity.TriggerCollection triggers = Interactivity.Interaction.GetTriggers(this);
            triggers.Add(trigger);

            // Initialize the timer
            _timer = new DispatcherTimer() { Interval = Delay };
            _timer.Tick += (o, e) => 
            {
                _timer.Stop();
                _callMethodAction.Invoke(null); 
            };
        }
Example #3
0
        private static void BindCommandToEvent(FrameworkElement element, string commandName, string eventName)
        {
            var binding = new Binding(commandName);

            binding.Source = element.DataContext;
            var cmdAction = new InvokeCommandAction();

            BindingOperations.SetBinding(cmdAction, InvokeCommandAction.CommandProperty, binding);
            var trigger = new System.Windows.Interactivity.EventTrigger(eventName);

            trigger.Actions.Add(cmdAction);
            Interaction.GetTriggers(element).Add(trigger);
        }
Example #4
0
 static EventHelper()
 {
     EventToCommandProperty = DependencyProperty.RegisterAttached("EventToCommand", typeof(ICollection), typeof(EventHelper), new PropertyMetadata((x, y) =>
     {
         var collection = y.NewValue as ICollection;
         if (collection != null)
         {
             foreach (EventToCommand action in collection)
             {
                 var trigger = new System.Windows.Interactivity.EventTrigger(action.EventName);
                 trigger.Actions.Add(action);
                 System.Windows.Interactivity.Interaction.GetTriggers(x).Add(trigger);
             }
         }
     }));
 }
Example #5
0
 private void checkBox1_Checked(object sender, RoutedEventArgs e)
 {
     trigger = new System.Windows.Interactivity.EventTrigger();
         trigger.EventName = "Click";
         PlaySoundAction beeper = new PlaySoundAction();
         beeper.Source = new Uri(@"C:\Users\Administrator\Documents\Expression\Blend 4\Projects\EmbeddedSystemsProject\EmbeddedSystemsProject\censor-beep-1.mp3", UriKind.Absolute);
         beeper.Volume = 1.0;
         trigger.Actions.Add(beeper);
         trigger.Attach(button1);
 }
        public void SavingWindowStateActionTest()
        {
            var trigger = new System.Windows.Interactivity.EventTrigger("Closed");
            var trg = new SavingWindowStateAction();
            trigger.Actions.Add(trg);

            var w = new Window();
            w.Name = "FMainWindow";
            w.Left = 100;
            w.Top = 110;
            w.Width = 320;
            w.Height = 240;

            Interaction.GetTriggers(w).Add(trigger);
            trg.Parameter = w;

            w.ShowDialog();

            var r = Setting.MainWindowBounds;
            Assert.IsTrue(w.Left == r.Left);
            Assert.IsTrue(w.Top == r.Top);
            Assert.IsTrue(w.Width == r.Width);
            Assert.IsTrue(w.Height == r.Height);
        }
        public void SavingDataGridStateActionTest()
        {
            var trigger = new System.Windows.Interactivity.EventTrigger("Closed");
            var trg = new SavingDataGridStateAction();
            trigger.Actions.Add(trg);

            var w = new Window();
            Interaction.GetTriggers(w).Add(trigger);

            var dg = new DataGrid();
            dg.Name = "FDataGrid";
            var c1 = new ColumnSetting() { DisplayIndex = 0, Width = -2 };
            var c2 = new ColumnSetting() { DisplayIndex = 1, Width = 100 };
            var c3 = new ColumnSetting() { DisplayIndex = 2, Width = 200 };
            var c4 = new ColumnSetting() { DisplayIndex = 3, Width = -1 };
            var c5 = new ColumnSetting() { DisplayIndex = 4, Width = 0 };
            dg.Columns.Add(new DataGridTemplateColumn() { DisplayIndex = c1.DisplayIndex, Width = c1.Width });
            dg.Columns.Add(new DataGridTemplateColumn() { DisplayIndex = c2.DisplayIndex, Width = c2.Width });
            dg.Columns.Add(new DataGridTemplateColumn() { DisplayIndex = c3.DisplayIndex, Width = c3.Width });
            dg.Columns.Add(new DataGridTemplateColumn() { DisplayIndex = c4.DisplayIndex, Width = c4.Width });
            dg.Columns.Add(new DataGridTemplateColumn() { DisplayIndex = c5.DisplayIndex, Width = c5.Width });
            trg.Parameter = dg;

            w.ShowDialog();

            var cols = Setting.DataGridColumns;
            var c = cols[0];
            Assert.IsTrue(c1.Equals(c));
            c = cols[1];
            Assert.IsTrue(c2.Equals(c));
            c = cols[2];
            Assert.IsTrue(c3.Equals(c));
            c = cols[3];
            Assert.IsTrue(c4.Equals(c));
            c = cols[4];
            Assert.IsTrue(c5.Equals(c));

            Setting.Save();
        }
Example #8
0
        private void callback(string htmlStr)
        {
            if(htmlStr.Equals("NO"))
               {
               MessageBoxResult result = MessageBox.Show("检测到当前没有网络,请联上网络重启程序", "提醒", MessageBoxButton.OK);
               if (result==MessageBoxResult.OK)
               {
                   ((MainPage)this.Parent).Exit();
               }
              }

            string heropart = htmlhelp.GetUniqTag(htmlStr, "div", "class=\"BG_Block\"");
            List<string> allheros = htmlhelp.GetTagCollectByCharacter(heropart, "li", "");

            foreach (var item in allheros)
            {
                i++;
                Hero hero = new Hero(item);
                string gif = hero.Src;
                int start = gif.LastIndexOf('/');
                  int length = gif.Length - start;
                  string name = gif.Substring(start + 1);
                  string name1 = " /Heros/" + name.Substring(0, name.Length - 4) + ".png";
                  Image image = new Image();
                  image.Width = 60;
                  image.Height = 60;
                  image.Margin = new Thickness(5, 5, 5, 5);
                  image.Source = new BitmapImage() { UriSource = new Uri(name1, UriKind.Relative) };
                  System.Windows.Interactivity.EventTrigger ev = new System.Windows.Interactivity.EventTrigger("Tap");
                  NavigateToPageAction action = new NavigateToPageAction();

                  ev.Actions.Add(action);
                    Interaction.GetTriggers(image).Add(ev);
                    if (i <= 38)
                    {
                        heroPanel1.Children.Add(image);
                    }
                    if (i > 38 && i <= 72)
                    {
                        heroPanel2.Children.Add(image);
                    }
                    if (i > 72)
                    {
                        heroPanel3.Children.Add(image);
                    }
                    HeroTable heroItem = new HeroTable()
                    {
                        AvatarUri = name1,
                        Name = hero.Alt,
                        Link = hero.Href
                    };
                    db.heroTable.InsertOnSubmit(heroItem);
                    db.SubmitChanges();
                    action.TargetPage = "/Views/SingleHero.xaml?id=" + heroItem.Id;
                  }
            waiting.WaitingEnd();
        }
Example #9
0
        private void getDataFromDataBase()
        {
            i=0;
            foreach (HeroTable item in db.heroTable)
            {
                i++;
                    Image image = new Image();
                    image.Width = 60;
                    image.Height = 60;
                    image.Margin = new Thickness(5, 5, 5, 5);
                    image.Source = new BitmapImage() { UriSource = new Uri(item.AvatarUri, UriKind.Relative) };
                    System.Windows.Interactivity.EventTrigger ev = new System.Windows.Interactivity.EventTrigger("Tap");
                    NavigateToPageAction action = new NavigateToPageAction();
                    action.TargetPage = "/Views/SingleHero.xaml?id=" + item.Id;
                    ev.Actions.Add(action);
                    Interaction.GetTriggers(image).Add(ev);

                    if (i <= 38)
                    {
                        heroPanel1.Children.Add(image);
                    }
                    if (i > 38 && i <= 72)
                    {
                        heroPanel2.Children.Add(image);
                    }
                    if (i > 72)
                    {
                        heroPanel3.Children.Add(image);
                    }
            }
        }
Example #10
0
        public override void OnApplyTemplate()
        {
            this.CombateGrid = this.GetTemplateChild("CombateGrid") as Grid;
            if (this.CombateGrid == null)
            {
                return;
            }

            foreach (BoardField field in Board.Layout)
            {
                var rect = new Rectangle
                {
                    Stroke = Brushes.Black,
                };

                var rectStyle = new Style(typeof(Rectangle));

                var defaultFill            = new Setter(Shape.FillProperty, Brushes.Transparent);
                var defaultStrokethickness = new Setter(Shape.StrokeThicknessProperty, 1.0);
                var defaultHitTest         = new Setter(IsHitTestVisibleProperty, true);

                rectStyle.Setters.Add(defaultFill);
                rectStyle.Setters.Add(defaultStrokethickness);
                rectStyle.Setters.Add(defaultHitTest);

                var unwalkableFill            = new Setter(Shape.FillProperty, Brushes.Blue);
                var unwalkableStrokeThickness = new Setter(Shape.StrokeThicknessProperty, 0.0);
                var unwalkableHitTest         = new Setter(IsHitTestVisibleProperty, false);
                var unwalkableTrigger         = new DataTrigger
                {
                    Binding = new Binding("IsWalkable")
                    {
                        Source = field
                    },
                    Value = false
                };
                unwalkableTrigger.Setters.Add(unwalkableFill);
                unwalkableTrigger.Setters.Add(unwalkableStrokeThickness);
                unwalkableTrigger.Setters.Add(unwalkableHitTest);

                var attackableFill = new Setter
                {
                    Property = Shape.FillProperty,
                    Value    = Brushes.Red
                };
                var atackableTrigger = new DataTrigger
                {
                    Binding = new Binding("IsAttackable")
                    {
                        Source = field
                    },
                    Value = true
                };
                atackableTrigger.Setters.Add(attackableFill);

                var enabledFill = new Setter
                {
                    Property = Shape.FillProperty,
                    Value    = Brushes.SpringGreen
                };
                var enabledTrigger = new DataTrigger
                {
                    Binding = new Binding("IsEnabled")
                    {
                        Source = field
                    },
                    Value = true
                };
                enabledTrigger.Setters.Add(enabledFill);

                rectStyle.Triggers.Add(unwalkableTrigger);
                rectStyle.Triggers.Add(atackableTrigger);
                rectStyle.Triggers.Add(enabledTrigger);

                rect.Style = rectStyle;

                var clickDownEvent = new EventToCommand
                {
                    Command          = this.Vm.FieldClickDownCommand,
                    CommandParameter = field
                };
                var triggerEvent = new InteractiveEventTrigger
                {
                    EventName = "MouseLeftButtonDown",
                };
                triggerEvent.Actions.Add(clickDownEvent);
                TriggerCollection triggers = Interaction.GetTriggers(rect);
                triggers.Add(triggerEvent);

                Grid.SetColumn(rect, field.Column);
                Grid.SetRow(rect, field.Row);
                Panel.SetZIndex(rect, 1);
                this.CombateGrid.Children.Add(rect);
            }

            foreach (BoardPiece piece in SelfPlayer.Army)
            {
                var button = new Button
                {
                    BorderThickness  = new Thickness(3),
                    BorderBrush      = Brushes.Black,
                    FontWeight       = FontWeights.Bold,
                    Command          = this.Vm.PieceClickCommand,
                    CommandParameter = piece
                };

                var buttonStyle = new Style(typeof(Button))
                {
                    BasedOn = FindResource("MetroCircleButtonStyle") as Style
                };

                var defaultBackground = new Setter(BackgroundProperty, Brushes.Gray);
                var defaultVisibility = new Setter(VisibilityProperty, Visibility.Collapsed);
                var defaultEffect     = new Setter(EffectProperty, null);
                var defaultForeground = new Setter(ForegroundProperty, Brushes.Black);
                var defaultFontSize   = new Setter(FontSizeProperty, 12.0);

                buttonStyle.Setters.Add(defaultBackground);
                buttonStyle.Setters.Add(defaultVisibility);
                buttonStyle.Setters.Add(defaultEffect);
                buttonStyle.Setters.Add(defaultForeground);
                buttonStyle.Setters.Add(defaultFontSize);

                var player1Setter = new Setter(BackgroundProperty, TryFindResource("Player1Brush"));
                var player2Setter = new Setter(BackgroundProperty, TryFindResource("Player2Brush"));

                var isOpponentCondition = new Condition
                {
                    Binding = new Binding("IsOpponent")
                    {
                        Source = piece
                    },
                    Value = true
                };
                var isSelfPlayerCondition = new Condition
                {
                    Binding = new Binding("IsOpponent")
                    {
                        Source = piece
                    },
                    Value = false
                };
                var opponentIsPlayer1 = new Condition
                {
                    Binding = new Binding("IsPlayer2")
                    {
                        Source = this.Vm.Opponent
                    },
                    Value = false
                };
                var selfPlayerIsPlayer1 = new Condition
                {
                    Binding = new Binding("IsPlayer2")
                    {
                        Source = this.Vm.SelfPlayer
                    },
                    Value = false
                };
                var opponentIsPlayer2 = new Condition
                {
                    Binding = new Binding("IsPlayer2")
                    {
                        Source = this.Vm.Opponent
                    },
                    Value = true
                };
                var selfPlayerIsPlayer2 = new Condition
                {
                    Binding = new Binding("IsPlayer2")
                    {
                        Source = this.Vm.SelfPlayer
                    },
                    Value = true
                };

                var player1Trigger1 = new MultiDataTrigger();
                player1Trigger1.Conditions.Add(isOpponentCondition);
                player1Trigger1.Conditions.Add(opponentIsPlayer1);
                player1Trigger1.Setters.Add(player1Setter);

                var player1Trigger2 = new MultiDataTrigger();
                player1Trigger2.Conditions.Add(isSelfPlayerCondition);
                player1Trigger2.Conditions.Add(selfPlayerIsPlayer1);
                player1Trigger2.Setters.Add(player1Setter);

                var player2Trigger1 = new MultiDataTrigger();
                player2Trigger1.Conditions.Add(isOpponentCondition);
                player2Trigger1.Conditions.Add(opponentIsPlayer2);
                player2Trigger1.Setters.Add(player2Setter);

                var player2Trigger2 = new MultiDataTrigger();
                player2Trigger2.Conditions.Add(isSelfPlayerCondition);
                player2Trigger2.Conditions.Add(selfPlayerIsPlayer2);
                player2Trigger2.Setters.Add(player2Setter);

                var visibilitySetter  = new Setter(VisibilityProperty, Visibility.Visible);
                var visibilityTrigger = new DataTrigger
                {
                    Binding = new Binding("IsAlive")
                    {
                        Source = piece
                    },
                    Value = true
                };
                visibilityTrigger.Setters.Add(visibilitySetter);

                var effectSetter  = new Setter(EffectProperty, new DropShadowEffect());
                var effectTrigger = new DataTrigger
                {
                    Binding = new Binding("IsSelected")
                    {
                        Source = piece
                    },
                    Value = true
                };
                effectTrigger.Setters.Add(effectSetter);

                var onAttackFontSizeSetter = new Setter(FontSizeProperty, button.FontSize * 2.0);

                var winningForegroundSetter = new Setter(ForegroundProperty, Brushes.Green);
                var winningTrigger          = new DataTrigger
                {
                    Binding = new Binding("IsDefeating")
                    {
                        Source = piece
                    },
                    Value = true
                };
                winningTrigger.Setters.Add(onAttackFontSizeSetter);
                winningTrigger.Setters.Add(winningForegroundSetter);

                var defeatStoryboard = new Storyboard
                {
                    AccelerationRatio = 0.2
                };
                defeatStoryboard.Completed += (s, _) => DefeatStoryboard_Completed();
                var defeatAnimation = new DoubleAnimation(0.1, new TimeSpan(0, 0, 0, 2, 0));
                Storyboard.SetTarget(defeatAnimation, button);
                Storyboard.SetTargetProperty(defeatAnimation, new PropertyPath(FontSizeProperty));
                defeatStoryboard.Children.Add(defeatAnimation);
                var beginSb = new BeginStoryboard
                {
                    Storyboard = defeatStoryboard,
                    Name       = "DefeatStoryboard"
                };
                var stopSb = new StopStoryboard
                {
                    BeginStoryboardName = beginSb.Name
                };
                var losingForegroundSetter = new Setter(ForegroundProperty, Brushes.Red);
                var losingTrigger          = new DataTrigger
                {
                    Binding = new Binding("IsBeingDefeated")
                    {
                        Source = piece
                    },
                    Value = true
                };
                losingTrigger.EnterActions.Add(beginSb);
                losingTrigger.ExitActions.Add(stopSb);
                losingTrigger.Setters.Add(onAttackFontSizeSetter);
                losingTrigger.Setters.Add(losingForegroundSetter);

                buttonStyle.Triggers.Add(player1Trigger1);
                buttonStyle.Triggers.Add(player1Trigger2);
                buttonStyle.Triggers.Add(player2Trigger1);
                buttonStyle.Triggers.Add(player2Trigger2);
                buttonStyle.Triggers.Add(visibilityTrigger);
                buttonStyle.Triggers.Add(effectTrigger);
                buttonStyle.Triggers.Add(winningTrigger);
                buttonStyle.Triggers.Add(losingTrigger);

                buttonStyle.RegisterName(beginSb.Name, beginSb);
                button.Style = buttonStyle;

                ApplyBinding("Column", piece, button, Grid.ColumnProperty);
                ApplyBinding("Row", piece, button, Grid.RowProperty);
                ApplyBinding("PowerLevel", piece, button, ContentProperty);

                Panel.SetZIndex(button, 2);
                this.CombateGrid.Children.Add(button);
            }

            foreach (BoardPiece piece in Opponent.Army)
            {
                var button = new Button
                {
                    Effect           = null,
                    BorderThickness  = new Thickness(3),
                    BorderBrush      = Brushes.Black,
                    FontWeight       = FontWeights.Bold,
                    IsHitTestVisible = false
                };

                var buttonStyle = new Style(typeof(Button))
                {
                    BasedOn = FindResource("MetroCircleButtonStyle") as Style
                };

                var defaultBackground = new Setter(BackgroundProperty, Brushes.Gray);
                var defaultVisibility = new Setter(VisibilityProperty, Visibility.Collapsed);
                var defaultForeground = new Setter(ForegroundProperty, Brushes.Black);
                var defaultFontSize   = new Setter(FontSizeProperty, 12.0);

                buttonStyle.Setters.Add(defaultBackground);
                buttonStyle.Setters.Add(defaultVisibility);
                buttonStyle.Setters.Add(defaultForeground);
                buttonStyle.Setters.Add(defaultFontSize);

                var player1Setter = new Setter(BackgroundProperty, TryFindResource("Player1Brush"));
                var player2Setter = new Setter(BackgroundProperty, TryFindResource("Player2Brush"));

                var isOpponentCondition = new Condition
                {
                    Binding = new Binding("IsOpponent")
                    {
                        Source = piece
                    },
                    Value = true
                };
                var isSelfPlayerCondition = new Condition
                {
                    Binding = new Binding("IsOpponent")
                    {
                        Source = piece
                    },
                    Value = false
                };
                var opponentIsPlayer1 = new Condition
                {
                    Binding = new Binding("IsPlayer2")
                    {
                        Source = this.Vm.Opponent
                    },
                    Value = false
                };
                var selfPlayerIsPlayer1 = new Condition
                {
                    Binding = new Binding("IsPlayer2")
                    {
                        Source = this.Vm.SelfPlayer
                    },
                    Value = false
                };
                var opponentIsPlayer2 = new Condition
                {
                    Binding = new Binding("IsPlayer2")
                    {
                        Source = this.Vm.Opponent
                    },
                    Value = true
                };
                var selfPlayerIsPlayer2 = new Condition
                {
                    Binding = new Binding("IsPlayer2")
                    {
                        Source = this.Vm.SelfPlayer
                    },
                    Value = true
                };

                var player1Trigger1 = new MultiDataTrigger();
                player1Trigger1.Conditions.Add(isOpponentCondition);
                player1Trigger1.Conditions.Add(opponentIsPlayer1);
                player1Trigger1.Setters.Add(player1Setter);

                var player1Trigger2 = new MultiDataTrigger();
                player1Trigger2.Conditions.Add(isSelfPlayerCondition);
                player1Trigger2.Conditions.Add(selfPlayerIsPlayer1);
                player1Trigger2.Setters.Add(player1Setter);

                var player2Trigger1 = new MultiDataTrigger();
                player2Trigger1.Conditions.Add(isOpponentCondition);
                player2Trigger1.Conditions.Add(opponentIsPlayer2);
                player2Trigger1.Setters.Add(player2Setter);

                var player2Trigger2 = new MultiDataTrigger();
                player2Trigger2.Conditions.Add(isSelfPlayerCondition);
                player2Trigger2.Conditions.Add(selfPlayerIsPlayer2);
                player2Trigger2.Setters.Add(player2Setter);

                var visibilitySetter  = new Setter(VisibilityProperty, Visibility.Visible);
                var visibilityTrigger = new DataTrigger
                {
                    Binding = new Binding("IsAlive")
                    {
                        Source = piece
                    },
                    Value = true
                };
                visibilityTrigger.Setters.Add(visibilitySetter);

                var onAttackFontSizeSetter = new Setter(FontSizeProperty, button.FontSize * 2);

                var winningForegroundSetter = new Setter(ForegroundProperty, Brushes.Green);
                var winningTrigger          = new DataTrigger
                {
                    Binding = new Binding("IsDefeating")
                    {
                        Source = piece
                    },
                    Value = true
                };
                winningTrigger.Setters.Add(onAttackFontSizeSetter);
                winningTrigger.Setters.Add(winningForegroundSetter);

                var defeatStoryboard = new Storyboard
                {
                    AccelerationRatio = 0.2
                };
                defeatStoryboard.Completed += (s, _) => DefeatStoryboard_Completed();
                var defeatAnimation = new DoubleAnimation(0.1, new TimeSpan(0, 0, 0, 2, 0));
                Storyboard.SetTarget(defeatAnimation, button);
                Storyboard.SetTargetProperty(defeatAnimation, new PropertyPath(FontSizeProperty));
                defeatStoryboard.Children.Add(defeatAnimation);
                var beginSb = new BeginStoryboard
                {
                    Storyboard = defeatStoryboard,
                    Name       = "DefeatStoryboard"
                };
                var stopSb = new StopStoryboard
                {
                    BeginStoryboardName = beginSb.Name
                };
                var losingForegroundSetter = new Setter(ForegroundProperty, Brushes.Red);
                var losingTrigger          = new DataTrigger
                {
                    Binding = new Binding("IsBeingDefeated")
                    {
                        Source = piece
                    },
                    Value = true
                };
                losingTrigger.EnterActions.Add(beginSb);
                losingTrigger.ExitActions.Add(stopSb);
                losingTrigger.Setters.Add(onAttackFontSizeSetter);
                losingTrigger.Setters.Add(losingForegroundSetter);

                buttonStyle.Triggers.Add(player1Trigger1);
                buttonStyle.Triggers.Add(player1Trigger2);
                buttonStyle.Triggers.Add(player2Trigger1);
                buttonStyle.Triggers.Add(player2Trigger2);
                buttonStyle.Triggers.Add(visibilityTrigger);
                buttonStyle.Triggers.Add(winningTrigger);
                buttonStyle.Triggers.Add(losingTrigger);

                buttonStyle.RegisterName(beginSb.Name, beginSb);
                button.Style = buttonStyle;

                ApplyBinding("Column", piece, button, Grid.ColumnProperty);
                ApplyBinding("Row", piece, button, Grid.RowProperty);
                ApplyBinding("PowerLevel", piece, button, ContentProperty);

                Panel.SetZIndex(button, 2);
                this.CombateGrid.Children.Add(button);
            }

            this.CombateGridChildren = this.CombateGrid.Children.Cast <UIElement>();

            base.OnApplyTemplate();
        }