0504样式触发器Trigger

1、Trigger 根据什么条件触发什么动作

            <Style.Triggers>
                <Trigger Property="Width" Value="100">
                    <Setter Property="Background" Value="Gray"/>
                </Trigger>
                <Trigger Property="Width" Value="200">
                    <Setter Property="Background" Value="Orange"/>
                </Trigger>
            </Style.Triggers>

Trigger设置条件,来自当前Style内部的属性值的变化

Setter设置动作

可以不同的条件执行不同的动作

 

2、常见checkbox,选中事件

<CheckBox Content="选中事件" Style="{StaticResource cbx}" IsChecked="False" />
CheckBox 不同与textblack 需要指定key
        <Style TargetType="CheckBox" x:Key="cbx">
            <Setter Property="FontSize" Value="30"/>
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Foreground" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>

选中后前景色变化,取消选择恢复

 

<CheckBox Content="选中事件" Style="{StaticResource cbx}" Foreground="Green" />

如果内联设置了Foreground属性,则优先级最高,不管触发器怎么写都不会生效

要想生效,必须在Style内部设置样式,

<Setter Property="Foreground" Value="Green"/>

触发才会生效

Content属性也是一样,要在Style内部设置样式定义,才会改变

 

3、Button

鼠标移动

<Trigger Property="IsMouseOver" Value="True">
  <Setter Property="Foreground" Value="Green"/>
</Trigger>

鼠标点击

<Trigger Property="IsPressed" Value="True">
  <Setter Property="Foreground" Value="Red"/>
</Trigger>

移动包含点击,点击顺序要在移动后面才会生效

联合触发器

                <MultiTrigger >
                    <MultiTrigger.Conditions>
                        <Condition Property="Width" Value="100"/>
                        <Condition Property="IsPressed" Value="True"/>
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="Background" Value="Red"/>
                    </MultiTrigger.Setters>
                </MultiTrigger>

更改button背景色是系统模板的优先级高,所以要改模板,样式优先级不如模板所以不生效

 

posted on 2025-04-08 22:32  张彦山  阅读(22)  评论(0)    收藏  举报