2013/08/27 C# WPF 学习笔记

事件系统在WPF中也被升级——进化成为路由事件(Routed Event),并在其基础上衍生出命令传递机制。

这些机制在很大程度上减少了对程序员的束缚,让程序的设计和实现更加灵活,模块之间的耦合度也进一步降低。


路由(Route)一词的大意是这样:起点与终点间有若干个中转站,从起点出发后经过每个中转站时要做出选择,

最终以正确(比如最短或者最快)的路径到达终点。编程的本质是用编译器(有时要借助类库)来扩展操作系统的功能,

所以,程序的基本运行不可能脱离操作系统——Windows本身就是一种消息驱动的操作系统,所以我们的程序注定

都是消息驱动的,程序运行的时候也要把自己的消息系统与整个操作系统的消息系统“连通”才能够被执行和响应。


纵观几代Windows平台程序开发,最早的WindowsAPI开发(C语言)和MFC开发我们可以直接看到各种消息并可以

定义自己的消息;到了COM和VB时代,消息被封装为事件(Event)并一直沿用至.NET平台开发——无论怎么说,程序间

模块使用消息互相通信的本质是没有改变的。

从WindowsAPI开发到传统的.NET开发,消息的传递(或者说事件的激发与响应)都是直接模式的,即消息直接由发送者

交给接受者(或者说事件宿主发生的事件直接由事件响应者的事件处理器来处理)。

WPF把这种直接消息模型升级为可传递的消息模型——WPF的UI是由布局组件和控件构成的树形结构,

当这棵树上的某个结点激发出某个事件时,程序员可以选择以传统的直接事件模式让响应者来响应之,

也可以让这个事件在UI组件树沿着一定的方向传递且路过多个中转结点,并在这个路由过程中被恰当地处理。

你可以把WPF的路由事件看成是一只小蚂蚁,它可以从树的基部向顶部(或反向)目标爬行,每路过一个树枝

的分叉点就会把消息带给这个分叉点。


WPF事件的路由环境是UI组件树。

WPF中有两种“树”:一种叫逻辑树(Logical Tree);一种叫可视元素树(Visual Tree)。

Logical Tree最显著的特点就是它完全由布局组件和控件构成(包括列表控件中的条目元素),换句话说就是

它的每个结点不是布局组件就是控件。

如果把一片树叶放在放大镜下观察,你会发现这片叶子也像一颗“树”一样——有自己的基部并向上生长出多级分叉。

在WPF的Logical Tree上,充当叶子的一般都是空间爱你,如果我们把WPF的空间也放在“放大镜”下去观察,你会

发现每个WPF控件本身也是一颗由更细微级别的组件(它们不是控件,而是一些可视化组件,派生自Visual类)组成的树。

用来观察WPF控件的放大镜是我们前面提及的Blend,使用Blend可以解剖并观察一个控件的模板(Template)




1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、资源1项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值