触发器(Trigger)

发布时间 2023-10-19 16:22:48作者: zhangxiuju

普通触发器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>
       <Trigger Property="IsMouseOver" Value="True">
          <Setter TargetName="Border" Property="Background" Value="#FFC2E0FF"/>
       </Trigger>
   </ControlTemplate.Triggers>
</ControlTemplate>

 

3.DataTemplate中使用

<DataTemplate DataType="{x:Type local:Employee}">
    <Grid>
        <TextBlock x:Name="txtName"  Text="{Binding Name}"/>
    </Grid>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Sex}" Value="Male">
            <Setter TargetName="txtName" Property="Foreground" Value="LightBlue"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>