样式关联触发器和事件触发器
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具:VisualStudio2015 关键技术:WPF 作者:纳兹撰写时间:2021年1月20日
首先是事件触发器:以在以下4个位置定义事件触发器:
1、在样式中(Style.Triggers集合)。
2、在数据模板中(DataTemplate.Triggers集合)。
3、在控件模板中(ControlTemplate.Triggers集合)。
4、直接在元素中定义事件触发器(FrameworkElement.Triggers集合)。当创建事件触发器时,需
指定开始触发器的路由事件和触发器执行的一个或多个动作。对于动画,最常用的动作
BeginStoryboard,该动作相当 于调用BeginAnimation()方法。所有事件触发器都可以启动动作,
有动作都由继承自System.Windows.TriggerAction的类表示。设置按钮高度宽度、名称、字体
小、背景颜色:
<Button Width="200" Height="80" Content="事件触发器" FontSize="20" Background="LightGreen">
<!--元素触发器-->
<Button.Triggers>
<!--定义事件触发器-->
<EventTrigger RoutedEvent="Button.Click">
<!--执行一个动作-->
<EventTrigger.Actions>
<!--开始故事板:故事板是增强的时间线,可用来分组多个动画,而且具
有控制动画播放的能力暂停、停止以及播放位置。然而Storyboard类提供的最基本功能是,能够
用TargetProperty和TargetName属性指向某个特定属性和特定元素,换句话说,故事板在动画和
望应用动画的属性之间架起了一座桥梁。其 中TargetProperty属性和TargetName属性都是附加性-->
<BeginStoryboard>
<!--创建一个故事板-->
<Storyboard>
<!--创建一个DoubleAnimation类-->
<DoubleAnimation Storyboard.TargetProperty="Height" To="350" RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
效果:同时上下方向放大到高度350。
样式关联触发器:有三种基本类型的WPF触发器:属性触发器、数据触发器以及事件触发器。使
触发器是关联动画的最常用方式,但并不是唯一的选择。
<Window.Resources>
<Style TargetType="Button">
<Setter Property="FontSize" Value="20"/> <Style.Triggers>
<!--使用属性触发器-->
<Trigger Property="IsPressed" Value="True">
<!--在这里使用的是EnterActions-->
<Trigger.EnterActions>
<!--开始故事板-->
<BeginStoryboard>
<!--创建一个故事板-->
<Storyboard Storyboard.TargetProperty="Width">
<!--创建一个DoubleAnimation类-->
<!--Duration:播放时间长-->
<DoubleAnimation To="300" RepeatBehavior="1" Duration="0:0:3"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources> <Grid>
<Button Width="200" Height="50" Content="使用样式关联触发器"></Button>
</Grid>
效果如下图:
使用样式关联触发器让它左右放大到200,然后循环。以上是样式关联触发器和事件触发器。