WPF里面触发器

WPF中有种叫做触发器的东西(记住不是数据库的trigger哦)。它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作。

WPFtrigger的主要类型有:Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种。从字面意思上我们想大家已经知道个大概,接下来我将还会用实例代码逐一进行介绍。trigger主要运用的场景在Style、ControlTemplate、DataTemplate三个地方。在这些地方可以使用trigger,具体视情况而定。

1.在Style中使用各种trigger

在style中使用的trigger主要是属性的触发器,当属性的值发生改变是将会引发触发器。

我们手写在Window中定义一个动画一个事件触发器

   <Window.Resources>
        <Storyboard x:Key="bonn1">
            <DoubleAnimation Storyboard.TargetName="butt" Storyboard.TargetProperty="Width" To="100" Duration="0:0:0.5"></DoubleAnimation>
        </Storyboard>
        <Storyboard x:Key="bonn2">
            <DoubleAnimation Storyboard.TargetName="butt" Storyboard.TargetProperty="Width"  Duration="0:0:0.5"></DoubleAnimation>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="Button.Click" SourceName="butt">
            <BeginStoryboard Storyboard="{DynamicResource bonn1}"></BeginStoryboard>
        </EventTrigger>
        <EventTrigger RoutedEvent="Button.MouseLeave" SourceName="butt">
            <BeginStoryboard Storyboard="{DynamicResource bonn2}"></BeginStoryboard>
        </EventTrigger>
    </Window.Triggers>

绑定的按钮定义如下:

  <Button Name="butt" Style="{DynamicResource BtnInfoStyle}" Width="70" Content="信息">
                    <!--<i:Interaction.Behaviors>
                        <local:LightedEffectBehavior/>
                    </i:Interaction.Behaviors>
                    <Button.Triggers>
                        <EventTrigger RoutedEvent="Button.Click">
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Width" To="100" Duration="0:0:0.5"></DoubleAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Button.Triggers>-->
                </Button>

 

posted @ 2023-03-03 16:43  ¥东方不败  阅读(172)  评论(0)    收藏  举报