1. 程式人生 > >WPF TriggerAction彈出子窗體 TargetedTrigger、TargetedTriggerAction用法

WPF TriggerAction彈出子窗體 TargetedTrigger、TargetedTriggerAction用法

原文: 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>