WPF 行为和触发器 学习笔记

使用触发器可以自动完成简单的样式改变,例如当一个属性发生变化时可以进行响应,并自动调整样式。

触发器通过Style.Triggers集合连接到样式,每个样式都可以有任意多个触发器,并且每个触发器都是System.Windows.TriggerBase的派生类的实例

继承自TriggerBase的类

Trigger 这是一个简单的触发器,它监视依赖项属性的变化,然后使用设置器改变样式

MultiTrigger 与Trigger类似,但是这种触发器联合了多个条件,只有满足了所有这些条件,才会出发

DataTrigger 这种触发器使用数据绑定,它与Trigger类似,只不过它监视的是所有绑定数据的变化

MultiDataTrigger 联合多个数据触发器

EventTrigger 这是最复杂的触发器,当一个事件发生时,这种触发器应用一个动画


可以为任何一个依赖项属性关联一个简单的触发器,例如可以通过响应Control类的IsFocused ,IsMouseOver以及IsPressed属性的变化,创建鼠标悬停效果和焦点效果

每个简单的触发器都指明了正在监视的属性,以及正在等待的属性值,当属性值出现时,将自动应用存储在Trigger.Setters集合中的设置器(但不能使用更复杂的触发器逻辑,例如,比较一个值,查看其是否处于某个范围,或执行一个计算等等。)


为了理解触发器的工作原理,需要记住依赖项属性,本质上,触发器是众多覆盖从依赖项属性返回的值的属性提供者之一,但原始 的属性(不管是本地设置的还是通过样式设置的)仍会保留,只要触发器被禁用,触发器之前的属性值就会再次生效。


事件触发器

偶普通的触发器等待一个属性发生变化,而事件触发器等待特定的事件被激发。

事件触发器要求用户提供一系列修改控件 的动作,这些动作通常被用于一个动画。

下面的事件触发器等待MouseEnter事件,然后动态改变按钮的FontSize属性从而形成动画效果,在0.2秒的时间内将字体放大到22个单位

<Style x:Key="BigFontButtonStyle">

  <Style.Setters>

   ....

</Style.Setters>

  <Style.Triggers>

    <EventTrigger RoutedEvent="Mouse.MouseEnter">

      <EventTrigger.Actions>

        <BeginStoryboard>

          <Storyboard>

            <DoubleAnimation

                      Duration="0:0:0.2"

                     Storyboard.TargetProperty="FontSize"

                     To="22" />

            </Storyboard>

        </BeginStoryboard>

     </EventTrigger.Actions>

 </EventTrigger>

...在这个示例中,使用了一个预先构建的DoubleAnimation类(和所有动画类一样,该类位于System.Windows.Media.Animation名称空间中)。DoubleAnimation类能够在一段给定的时间内将任何双精度数值增加(如FontSize属性值)逐渐改变为设定的目标值   ,在0.2秒的时间内改变22个单位


与属性触发器不同,如果希望元素返回到原始状态,需要反转事件触发器(这是因为默认的动画行为是:一旦动画完成就继续处于激活状态,从而保持最后的属性值)





行为:

理解行为模型

行为旨在封装了一些UI功能,从而可以不用编写代码就能够将其应用到元素上。从另一个角度来看,每个行为都为元素提供了一个服务,该服务涉及到监听几个不同事件并执行几个相关的操作。



http://www.cnblogs.com/ysisl/archive/2009/11/03/1595573.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值