WPF样式的触发器

EventSetter:当事件触发的时候会执行Handler的事件处理程序

 

样式的触发器:

使用触发器可自动完成简单的样式的改变,不需要使用代码,也可以完成不少工作。
触发器通过Style.Trigger集合链接到样式。每个样式可以有任意多个触发器。每个触发器都是System.Windows.TriggerBase的实例。
TriggerBase的子类
 
 
名称 说明
Trigger 这是一种最简单的触发器。可以监测依赖项属性的变化,然后设置器改变样式。
MultiTrigger 与Trigger类似,但这种触发器联合了多个条件。只有满足了所有这些条件,才会启动触发器。
DataTrigger 这种触发器使用数据绑定,与Trigger类似,只不过监视的是任意绑定数据的变化。
MultiDataTrigger 联合多个数据触发器。
EventTrigger 这是最复杂的触发器。当事件发生时,这种触发器应用动画。

 

 简单的触发器(Trigger)

 可为任何依赖项属性关联简单触发器。例如,可通过相应Control类的IsFocused、IsMouseOver以及IsPressed属性的变化,创建鼠标悬停效果和焦点效果。
每个触发器都制定了正在监视的属性以及正在等待的属性值。当属性值出现时,将应用Trigger.Setters集合里的设置器。
复制代码
<Window.Resources>
        <Style x:Key="BigFontButton">
            <Style.Setters>
                <Setter Property="Control.FontFamily" Value="Times New Roman"/>
                <Setter Property="Control.FontSize" Value="18"/>
                <Setter Property="Control.FontWeight" Value="Bold"/>
            </Style.Setters>
            <Style.Triggers>
                <Trigger Property="Control.IsFocused" Value="True">  //检测是否聚焦,然后执行改变前景色
                    <Setter Property="Control.Foreground" Value="DarkRed"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
复制代码

MultiTrigger

根据多个条件触发<Style.Triggers>

                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Property="Control.IsFocused" Value="true"/>
                        <Condition Property="Control.IsMouseOver" Value="true"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.Setters>
                        <Setter Property="Control.Foreground" Value="DarkRed"/>
                    </MultiDataTrigger.Setters>
                </MultiDataTrigger>
            </Style.Triggers>

DataTrigger(数据触发器)
根据绑定的数据内容的值内容触发

<Style.Triggers>
<DataTrigger Binding="{Binding Button.Text }" Value="hello">
<Setter Property="Foreground" Value="Red"> </Setter>

</DataTrigger>
</Style.Triggers>

MultiDataTrigger跟MultiTrigger同理

事件触发器

 <Style.Triggers>
                <EventTrigger RoutedEvent="Mouse.MouseEnter">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Duration="0:0:3" Storyboard.TargetProperty="FontSize"
                                                 To="50"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
                <EventTrigger RoutedEvent="Mouse.MouseLeave">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Duration="0:0:3" Storyboard.TargetProperty="FontSize"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Style.Triggers>

 

 
posted @ 2021-11-18 16:39  zyl2  阅读(299)  评论(0)    收藏  举报