WPF之触发器Triggers

Trigger触发器:表示一个触发器,它按单个条件应用属性值或执行操作。

SourceName属性:

获取或设置与导致关联的 setter 要应用的属性对象的名称。

Property属性:

设置需要判断的属性。

Value属性:

设置判断该属性是否等于该值,若等于执行setters操作

Setters属性:

设置一组 Setter 对象,描述要应用当满足指定的条件的操作。

EnterActions属性:

获取要在触发器对象变为活动状态时应用的 TriggerAction 对象的集合。

ExitActions属性:

获取要在触发器对象变为非活动状态时应用的 TriggerAction 对象的集合。
Trigger普通用法:

<Style x:Key="Triggers" TargetType="Button">
    <Style.Triggers>
    <Trigger Property="IsPressed" Value="true">
        <Setter Property = "Foreground" Value="Green"/>
    </Trigger>
    </Style.Triggers>
</Style>

Trigger动画用法

<!--当IsPressed属性为true,改变透明度达到闪动的效果 -->
<Trigger Property="IsPressed" Value="true">
	<Trigger.EnterActions>
		<BeginStoryboard x:Name="playAnimation">
			 <Storyboard  Storyboard.TargetName="FocusVisual" Storyboard.TargetProperty="Opacity">
				 <DoubleAnimation AutoReverse="True" RepeatBehavior="Forever" To="1" Duration="0:0:1" />
			</Storyboard>
		</BeginStoryboard>
	</Trigger.EnterActions>
    <!--停止闪动动画-->
	<Trigger.ExitActions>
		 <StopStoryboard BeginStoryboardName="playAnimation" />
	 </Trigger.ExitActions>
 </Trigger>
MultiTrigger 类:表示一个应用属性值或一组条件满足时执行操作的触发器。

Conditions属性:
设置 Condition 对象的集合。 对属性更改时满足所有集合中的条件时应用。
Setters属性:
设置一组 Setter 对象,描述要应用当满足指定的条件的操作。

<Style.Triggers>
  <Trigger Property="IsEnabled" Value="false">
    <Setter Property="Background" Value="#EEEEEE" />
  </Trigger>

  <MultiTrigger>
    <MultiTrigger.Conditions>
      <Condition Property="HasItems" Value="false" />
      <Condition Property="Width" Value="Auto" />
    </MultiTrigger.Conditions>
    <Setter Property="MinWidth" Value="120"/>
  </MultiTrigger>
</Style.Triggers>

DataTrigger 类:它会在绑定数据满足指定条件时应用属性值或执行操作。

Binding属性:

获取或设置产生数据对象的属性值的绑定。

Value属性:

设置判断该属性是否等于该值,若等于执行setters操作

Setters属性:

设置一组 Setter 对象,描述要应用当满足指定的条件的操作。

EnterActions属性:

获取要在触发器对象变为活动状态时应用的 TriggerAction 对象的集合。

ExitActions属性:

获取要在触发器对象变为非活动状态时应用的 TriggerAction 对象的集合。
DataTrigger普通用法:

<Style TargetType="ListBoxItem">
    <Style.Triggers>
      <DataTrigger Binding="{Binding Path=State}" Value="WA">
        <Setter Property="Foreground" Value="Red" />
      </DataTrigger>	
    </Style.Triggers>
  </Style>
MultiDataTrigger 类:表示一个应用属性值或绑定的数据满足一组条件时执行操作的触发器。

Conditions属性:
获取 Condition 对象的集合。 对属性值更改时满足所有集合中的条件时应用。
Setters属性:
获取一套 Setter 对象,描述的属性值时要应用的条件的所有 MultiTrigger 满足。
MultiDataTrigger普通用法:

<Window.Resources>
  <c:Places x:Key="PlacesData"/>

  <Style TargetType="ListBoxItem">
    <Style.Triggers>
      <DataTrigger Binding="{Binding Path=State}" Value="WA">
        <Setter Property="Foreground" Value="Red" />
      </DataTrigger>	
      <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding Path=Name}" Value="Portland" />
          <Condition Binding="{Binding Path=State}" Value="OR" />
        </MultiDataTrigger.Conditions>
        <Setter Property="Background" Value="Cyan" />
      </MultiDataTrigger>
    </Style.Triggers>
  </Style>
<StackPanel>
  <TextBlock FontSize="18" Margin="5" FontWeight="Bold"
    HorizontalAlignment="Center">Data Trigger Sample</TextBlock>
  <ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"
    ItemsSource="{Binding Source={StaticResource PlacesData}}"/>
</StackPanel>

EventTrigger 类:表示一个触发器,该触发器应用一组操作以响应一个事件。

RoutedEvent属性:

获取或设置将激活该触发器的 RoutedEvent。

SourceName属性:

获取或设置对象的名称,该对象具有激活此触发器的事件。 仅元素触发器或模板触发器可使用此名称。

Actions属性:

获取事件发生时要应用的操作的集合。

EnterActions属性:

获取要在触发器对象变为活动状态时应用的 TriggerAction 对象的集合。

ExitActions属性:

获取要在触发器对象变为非活动状态时应用的 TriggerAction 对象的集合。

EventTrigger普通用法:

<Style TargetType="Rectangle">
  <Setter Property="Width" Value="50" />
  <Setter Property="Height" Value="50" />
  <Setter Property="Margin" Value="20" />
  <Setter Property="HorizontalAlignment" Value="Left" />
  <Style.Triggers>
    <EventTrigger RoutedEvent="MouseEnter">
        <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation To="300" Duration="0:0:1.5" 
                AccelerationRatio="0.10" DecelerationRatio="0.25" 
                Storyboard.TargetProperty="(Canvas.Width)" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="MouseLeave">
        <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Duration="0:0:1.5" 
                AccelerationRatio="0.10" DecelerationRatio="0.25" 
                Storyboard.TargetProperty="(Canvas.Width)" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
  </Style.Triggers>
</Style>
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LADT-LINZI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值