触发器(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>

posted @ 2023-10-19 16:19  zhangxiuju  阅读(176)  评论(0)    收藏  举报