zoukankan      html  css  js  c++  java
  • 独特思路分析WPF架构

    本篇将从如下三点分析学习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 》

    参考文章:http://msdn.microsoft.com/en-us/library/ms750441.aspx 

  • 相关阅读:
    hibernate反向工程 (eclipse和myeclipse)【转】
    让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
    Struts Tags
    在Eclipse中配置tomcat
    The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:
    如何将maven项目导入myeclipse中
    Hibernate配置文件详解
    网站怎么布局能解决不同浏览器对CSS解析的差异,使用css reset
    SqlServer:此数据库处于单用户模式,导致数据库无法删除的处理
    Myeclipse最全快捷键
  • 原文地址:https://www.cnblogs.com/xjxz/p/WPFArchitecture.html
Copyright © 2011-2022 走看看