https://www.cnblogs.com/xjxz/archive/2012/11/18/WPFArchitecture.html
本篇将从如下三点分析学习WPF架构。
1、WPF总体结构
2、WPF类结构
3、WPF核心功能
第一张图把WPF架构分为三层(托管层,非托管层,操作系统组件层)来描述。但是有两个问题:1,为什么不加入CLR层,毕竟托管代码是在CLR上运行的。2,为什么是Direct3D,它只是DirectX的一个子集,DirectX的其它功能没用上吗?MSDN这张图有了CLR层,但是又缺少了WindowsBase.dll,WindowsCodecs.dll这两个组件。
这样就完整多了。值得注意的地方是,在托管层里面有条分割线,分为核心部分和框架部分。
第一张画的类多一点,亮点是有条分割线,线上面的类属于核心部分,线下面的类属于框架部分。第二张的亮点是给出了哪些是抽象类,哪些是实体类。
1、Dispatcher子系统,位于WindowsBase.all。负责WPF的线程调度。WPF鼓励单线程关联模式(STA ),当然也可以写多线程程序。
2、Visual子系统。位于PresentationCore.dll。负责界面的渲染呈现。与非托管层通信。其绘制界面的原理跟GDI比也有改进。它使用了缓存方法,充分利用显卡,可以绘制更复杂的图形,性能更好。
3、Property子系统。位于PresentationCore.dll。实现的功能有依赖属性,扩展属性, 带INotifyPropertyChange通知的普通属性。
4、Layout子系统。位于PresentationFramework.dll。Layout系统要计算和定位其控件的位置。是WPF借鉴Web开发的概念,相对Winform来说是创新。
5、Event子系统。位于PresentationFramework.dll。全新改进的事件系统。提供隧道( tunnel )和冒泡( bubble )两种事件。
6、Binding子系统。位于PresentationFramework.dll。实现数据绑定机制。
7、Style and Templates。位于PresentationFramework.dll。样式和模板功能。也是借鉴Web开发模式。
8、图形动画API等。位于PresentationFramework.dll。
对核心功能,在本篇不深入分析。
参考书籍: