达到触发条件,执行预期的响应,可以是样式、数据变化、动画等
通过 Style.Triggers 集合连接到样式中
每个样式可以有任意多个触发器
Trigger:监测依赖属性变化
MultiTrigger:多条件触发器
DataTrigger:监测数据变化
MultiDataTrigger:多数据变化触发器
EventTrigger:事件触发器
- Trigger
<Window.Resources>
<Style x:Key="ButtonStyle" TargetType="Button">
<Setter Property="Width" Value="100" />
<Setter Property="Height" Value="35" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="FontSize" Value="14" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Foreground" Value="Blue"/>
<Setter Property="FontSize" Value="12" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Button Style="{StaticResource ButtonStyle}" Content="Button"/>
</Grid>
- MultiTrigger
<Window.Resources>
<Style x:Key="ButtonStyle" TargetType="Button">
<Setter Property="Width" Value="100" />
<Setter Property="Height" Value="35" />
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsFocused" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Foreground" Value="Red"/>
<Setter Property="FontSize" Value="14"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<UniformGrid>
<Button Style="{StaticResource ButtonStyle}" Content="Button"/>
<Button Style="{StaticResource ButtonStyle}" Content="Button"/>
</UniformGrid>
</Grid>
- DataTrigger
<Window.Resources>
<Style x:Key="TextStyle" TargetType="TextBox">
<Setter Property="Height" Value="35"/>
<Setter Property="Width" Value="100" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self},Path=Text}" Value="123">
<Setter Property="Background" Value="Pink"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<UniformGrid>
<TextBox Style="{StaticResource TextStyle}"/>
</UniformGrid>
</Grid>