/// <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); }; }
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); }
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); } } })); }
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(); }
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(); }
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); } } }
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(); }