触发器(Trigger)
普通触发器Trigger(MultiTrigger),数据触发器DataTrigger(MultiDataTrigger),事件触发器EventTrigger
以下三种场合都可使用,注意默认设定对象。
1.style中使用
<Style TargetType="{x:Type CheckBox}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
</Trigger>
<DataTrigger Binding="{Binding Text, ElementName=''}" Value="1">
<Setter Property="Foreground" Value="Blue"/>
</DataTrigger>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="0:0:0.2"
Storyboard.TargetProperty="Width"
To="" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
2.ControlTemplate中使用
<ControlTemplate TargetType="{x:Type Button}">
<StackPanel>
<Border Height="" Background="Red"></Border>
</Border>
</StackPanel>
<ControlTemplate.Triggers>
<!--默认为控件熟悉,可使用SourceName指定模板中的控件属性-->
<Trigger Property="IsMouseOver" Value="True">
<!--默认为控件熟悉,可使用TargetName指定模板中的控件属性-->
<Setter TargetName="Border" Property="Background" Value="#FFC2E0FF"/>
</Trigger>
<DataTrigger Binding="{Binding Text, ElementName=''}" Value="1">
<!--设定属性值-->
</DataTrigger>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<!--设定动画-->
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
3.DataTemplate中使用
<DataTemplate DataType="{x:Type local:Employee}">
<Grid>
<TextBlock x:Name="txtName" Text="{Binding Name}"/>
</Grid>
<DataTemplate.Triggers>
<!--未指定SourceName和TargetName时,ContentControl默认为ContentPresenter-->
<Trigger Property="" Value="True">
<!--设定属性值-->
</Trigger>
<DataTrigger Binding="{Binding Sex}" Value="Male">
<Setter TargetName="txtName" Property="Foreground" Value="LightBlue"/>
</DataTrigger>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<!--设定动画-->
</EventTrigger>
</DataTemplate.Triggers>
</DataTemplate>

浙公网安备 33010602011771号