WPF TriggerAction弹出子窗体 TargetedTrigger、TargetedTriggerAction用法

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>

 

posted @ 2019-01-07 16:08  liuyong111  阅读(574)  评论(0编辑  收藏  举报