namespace TriggerAction { public class OpenWindowAction : TriggerAction<DependencyObject> { public Type WindowType { get { return (Type)GetValue(WindowTypeProperty); } set { SetValue(WindowTypeProperty, value); } } public static readonly DependencyProperty WindowTypeProperty = DependencyProperty.Register("WindowType", typeof(Type), typeof(OpenWindowAction), new PropertyMetadata(null)); protected override void Invoke(object parameter) { var windowObj= Activator.CreateInstance(WindowType) as Window; windowObj.ShowDialog(); } } public class ButtonAction : TriggerAction<Button> { protected override void Invoke(object parameter) { this.AssociatedObject.Content = DateTime.Now.ToString(); } } public class ButtonTargetAction : TargetedTriggerAction<Button> { protected override void Invoke(object parameter) { this.Target.Content = this.Target.Content + "1"; } } }
<Window x:Class="TriggerAction.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:local="clr-namespace:TriggerAction" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <Button Content="Button" HorizontalAlignment="Left" Margin="531,122,0,0" VerticalAlignment="Top" Width="164" Height="46"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <local:OpenWindowAction WindowType="{x:Type local:Window1}" /> <local:ButtonAction /> <local:ButtonTargetAction TargetName="aaa" /> </i:EventTrigger> </i:Interaction.Triggers> </Button> <Button x:Name="aaa" Content="Button" HorizontalAlignment="Left" Margin="531,238,0,0" VerticalAlignment="Top" Width="103" Height="30"/> </Grid> </Window>