WPF架构学习总结

WPF架构学习总结

ID:38289722

大小:68.60 KB

页数:5页

时间:2019-06-07

WPF架构学习总结_第1页
WPF架构学习总结_第2页
WPF架构学习总结_第3页
WPF架构学习总结_第4页
WPF架构学习总结_第5页
资源描述:

《WPF架构学习总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、WPF架构学习总结预期读者   1.初学者。   2.懒得总结的人。:)   3.想大致了解WPF框架主要类的功能的人。前言   学习WPF也有段时间了,今天把学到的东西整理一下,主要还是学自MSDN。   下面,我就WPF中最重要的继承线上的几个类列一下,并归纳下它们的功能和使用场景: Object(托管代码)   首当其冲的,自然是System.Object类了。这里主要想说的是,WPF的大部分代码都是使用托管代码编写,原因是因为CLR的许多不错的特性(如内存管理、错误处理、通用类型系统等。),可以让开发的程序更有效、更健壮。但是,框架并不是所有代码都

2、是托管的,也有一部分是由非托管代码编写。原因主要是因为WPF是展现层框架,它的显示需要和DirectX很紧密的集成起来,进行硬渲染和软渲染,以得到性能上的提升。   下面的结构图中,红色部分是属于WPF框架的。其中,只有milcore这个部分是采用非托管代码编写。所以,可以看出,我们在使用WPF的时候,是不会接触到里面的非托管代码的。 DispatcherObject(异步)   命令空间:System.Threading。   WPFDispatcher使用User32的消息机制来实现跨线程调用。工作机制类似Win32的消息泵。   WPF的线程模型和U

3、ser32的线程模型保持一致,使用STA。主要原因是互可操作性,因为现在的很多系统都是需要STA的,如IE、OLE2.0、剪贴板等。   通过Dispatcher,我们可以实现线程间的通信。继承自DispatcherObejct的类,都获取了一个所在线程的Dispatcher引用,这样,任何使用这个类的对象的线程,都可以使用它的Dispatcher来发送“消息”。   一般情况下,我们使用这个类的意图主要是异步线程调用DispatcherObject的Dispather来让DispatcherObject的创建线程做一些特定的事情,如设置界面上某个值。这样

4、大大方便了我们开发人员。想想我原来用WindowsForm开发的时候,为了异步调用显示一下Label,写出来的代码真是够繁琐。DependencyObject(属性)   命令空间:System.Windows。    WPF框架中最主要的思想之一是:优先使用属性,而不是事件、方法。   继承自DependencyObject的类,就拥有了WPF特别定制的“富”属性系统。该属性系统提供了以下好处:   1.DependencyProperty:“依赖”的属性,自动检测依赖性的属性表达式,当被依赖的属性变化时,自动更新属性值。   2.使用尽量少的属性值存储

5、空间。因为并不是每一个属性都会存储在内存中。   3.AttachedProperty:任何一个类都允许使用其它的类定义的任何依赖属性。(类似于javascript的expando特性。)Visual(集成、绘制)   命令空间:System.Windows.Media。   Visual类才真正是WPF的入口点。就是在这里,整合了托管代码API和非托管代码milcore。   WPF使用milcore中的一种叫CompositionNodes的数据结构来进行显示。这种数据结构类似一棵树,树的每个节点都带有绘制的指令。Visual以及Visual的子类,可

6、以通过消息协议来和CompositionNodes进行通信。(每一个Visual,可能会建立零到多个不等的CompositionNodes。)重点是:Visual的整棵树及其所附属绘制指令,都会被缓存起来。这样,整个系统可以进行高速的重绘,也不会因为用户程序的阻塞而阻塞显示。   在User32和GDI中,系统是通过一种盒子方式来进行绘制的:每一个成员都被放在一个指定的区域里面进行绘制,然后再叠加再一起。这样生成的图象中的每一个象素,其实都只属于唯一一个成员。但是是WPF系统中,使用的是"painter'salgorithm"绘制算法:从后到前,一个一个的

7、画出这些成员。这样的话,后画出来的成员就在已经绘制好的图案上继续进行绘制,就可以显示出一些复杂的半透明的图形。   而“属性优先”的思想,在Visual类中也有所体现。如,我们原来熟悉的DrawLine()/DrawLine()方式,现在变成了newLine()/newLine()。这种数据驱动的编程方式,可以让我们使用属性来完成一些复杂的绘制操作。又如,动画的使用方式,也是完全的使用属性声明方式。UIElement(界面基础)   命令空间:System.Windows。   UIElement提供了很多PresentationCore程序集中比较重要的

8、特性:   1.布局:   布局系统中,比较重要的是Measure

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。