• 独特思路分析WPF架构


    https://www.cnblogs.com/xjxz/archive/2012/11/18/WPFArchitecture.html

    本篇将从如下三点分析学习WPF架构。
    1、WPF总体结构
    2、WPF类结构
    3、WPF核心功能

    一、WPF总体结构

    1、先看看下面两张图,第一张来自书《Pro WPF in C# 2010.pdf》这本书,第二张来自MSDN。

      第一张图把WPF架构分为三层(托管层,非托管层,操作系统组件层)来描述。但是有两个问题:1,为什么不加入CLR层,毕竟托管代码是在CLR上运行的。2,为什么是Direct3D,它只是DirectX的一个子集,DirectX的其它功能没用上吗?MSDN这张图有了CLR层,但是又缺少了WindowsBase.dll,WindowsCodecs.dll这两个组件。

    2、自己画架构图。

      这样就完整多了。值得注意的地方是,在托管层里面有条分割线,分为核心部分和框架部分。

    二、WPF类结构

    1、WPF架构定义的类有很多,我们了解主要类,其它类可以用反编译工具去查看,可以看到源码。也来看看两张图吧,第一张来自《深入浅出WPF》国内的一本好书,另一张来自《 Pro WPF in C# 2010.pdf 》这本书。

      第一张画的类多一点,亮点是有条分割线,线上面的类属于核心部分,线下面的类属于框架部分。第二张的亮点是给出了哪些是抽象类,哪些是实体类。

    2、比较一下很明了了吧,自己的类图就不画了。偷懒:)

    三、WPF核心功能

    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。

      对核心功能,在本篇不深入分析。

    参考书籍:

    《深入浅出WPF》和《 Pro WPF in C# 2010.pdf 》

    参考文章:Architecture - WPF .NET Framework | Microsoft Docs 

  • 相关阅读:
    大数据Hadoop之——Apache Hudi 数据湖实战操作(Spark,Flink与Hudi整合)
    【线性表】—不带头单向非循环链表的增删查改
    2024Guitar Pro 8.1 Mac 最新下载、安装、激活、换机图文教程
    2023 年 Arm A-Profile 架构发展
    第四章:Java琐事
    三大知名向量化模型比较分析——m3e,bge,bce
    label studio 结合 MMDetection 实现数据集自动标记、模型迭代训练的闭环
    abc280
    SpringMVC数据格式化
    微信小程序开发SSM项目教学管理系统
  • 原文地址:https://blog.csdn.net/zunguitiancheng/article/details/126156287