博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF中的触发器简单总结
阅读量:4574 次
发布时间:2019-06-08

本文共 2009 字,大约阅读时间需要 6 分钟。

原文

触发器,从某种意义上来说它也是一种Style,因为它包含有一个Setter集合,并根据一个或多个条件执行Setter中的属性改变。因为复用的缘故,Styles是放置触发器的最好位置。但对于每个FrameworkElement来说都有Triggers集合,你也可以放在Triggers集合里。触发器有三种类型:  属性触发器Property Trigger:当Dependency Property的值发生改变时触发。  数据触发器Data Trigger:当普通.NET属性的值发生改变时触发。  事件触发器Event Trigger:当路由时间被触发时调用 1.      属性触发器(Property Trigger)属性触发器是WPF中最常用的触发器类型,因为我们前边说过依赖属性具有垂直变更通知的功能,所以在使用属性触发器时会很方便,而且因为WPF中每个控件超过2/3的属性都是依赖属性,所以它用到的场合更多。属性触发器是在当某个依赖属性的值发生变化时触发执行一个Setter的集合,当属性失去这个值时,这些被触发执行的Setter集合会自动被撤销例如:注意,属性触发器是用Trigger标识的        
属性触发器还经常被用在做数据验证时用来显示验证错误信息。在WPF学习之绑定里的Validation部分我们附有用属性触发器来判断是否有验证错误并显示相应验证错误信息的示例
2. 数据触发器Data Trigger数据触发器和属性触发器除了面对的对象类型不一样外完全相同。数据触发器是来检测非依赖属性------也就是用户自定义的.NET属性-----的值发生变化时来触发并调用符合条件的一系列Setter集合。例如:
3. 事件触发器 Event Trigger事件触发器,顾名思义是在某个事件被触发时来调用这个触发器的相关操作。因为WPF提供了用XAML来标记对象,事件等,所以其提供了一些在普通.NET开发中看似没用的属性例如IsMouseOver, IsPressed等,这是为了XAML来用的,使其可以很方便的通过某个属性来判断状态,也方便了Property Trigger的应用。而作为事件触发器来说,它所做的事情和Property Trigger类似,不过是它的内部不能是简单的Setter集合,而必须是TriggerAction的实例。例如:
4. MultiDataTrigger & MultiTrigger截至目前我们讨论的都是针对单个条件的触发器,也就是说当某一个条件满足时就会触发。而现实中我们可能需要满足很多个条件时才触发一系列操作,这个时候就需要用到MultiDataTrigger或MultiTrigger。MutliDataTrigger和MultiTrigger都具有一个Conditions集合用来存放一些触发条件,这里的Condition之间是and的关系,当所有条件都满足时,Setter集合才会被调用。根据名字就可以看清楚:MultiDataTrigger用来实现多个数据触发器(只用于普通.NET属性)满足条件时调用;MultiTrigger用来实现多个属性触发器(用于依赖属性)满足条件时调用例如:
同样的,你也可以用MultiDataTrigger来对自定义的属性进行多条件的与关系操作

 

posted on
2013-09-14 00:00 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/3320584.html

你可能感兴趣的文章
Ping 命令的使用方法总结
查看>>
python基础--01安装
查看>>
Spring boot配置mybatis多数据源
查看>>
获取系统的相关文件夹
查看>>
PAT-乙级-1008. 数组元素循环右移问题 (20)
查看>>
OpenCV 传统分割测试
查看>>
Springboot拦截器线上代码失效
查看>>
WCF初探-2:手动实现WCF程序
查看>>
好程序员技术分享html5和JavaScript的区别
查看>>
好程序员web前端分享CSS3文本属性
查看>>
ThinkPHP3.0启动过程
查看>>
Java入门 之 类和对象(一) - 类
查看>>
16级第二周寒假作业E题
查看>>
Java实现Windows锁屏
查看>>
在线会话管理
查看>>
文本处理之可视化wordcloud
查看>>
SampleManager(赛默飞)
查看>>
堆排序
查看>>
我的面试问题记录
查看>>
函数PARSENAME使用和截取字符串
查看>>