WPF编程-WPF体系结构

WPF简介

Windows Presentation Foundation(WPF)是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于 WPF。微软还提供了专门的界面开发语言XAML(Extensible Application Markup Language,可扩展应用程序标记语言),使得界面描述代码和程序代码得以分开,从而提高了开发效率并有利于团队开发。

Windows Presentation Foundation https://msdn.microsoft.com/zh-cn/library/ms754130(v=vs.110).aspx

WPF中的一些重要组件

WPF使用多层体系结构。在顶层,应用程序与完全由托管C#代码编写的一组高层服务进行交互。
WPF体系结构

  • PresentationFramework.dll包含WPF顶层的类型,包括哪些表示窗口、面板以及其他类型控件的类型。它还是想高层编程抽象,如样式。
  • PresentationCore.dll包含了基础类型,如UIElement类和Visual类,所有形状类和控件都继承自这两个类。
  • WindowsBase.dll包含了更多的基本要素,如DispatcherObject类和DependencyObject类,这两个类引入了依赖属性。
  • milcore.dll是WPF渲染系统的核心,也是媒体集成层(Media Integration Layer,MIL)的基础。其合成引擎将可视化元素转换为Driect3D所期望的三角形和纹理。
  • WindowsCodecs.dll是一套提供图像支持的低级API,例如处理、显示以及缩放位图和JPEG图像。
  • Direct3D是一套低级API,WPF应用程序中的所有图形都由它进行渲染。
  • User32用于解决哪些程序实际占有桌面的哪一部分。但在WPF中,它不负责渲染通用控件

类层次结构

WPF核心命名空间以System.Windows开头(如System.Windows、System.Windows.Controls、....)。下图为WPF中比较重要的几个类。

  • System.Threading.DispatcherObject
    WPF应用程序使用单线程(STA)模型,整个用户界面由单个线程拥有,即从另一个线程与用户界面元素进行交互是不安全的。通过继承DispatcherObject类,用户界面中的每个元素都可以检查代码是否在正确的线程上运行,并能通过访问调度程序为用用户界面线程封送代码。

  • System.Windows.DependencyObject
    在WPF中,主要是通过属性和屏幕上的元素进行交互。通过继承DependencyObject类,WPF类可获得对依赖项属性的支持

  • System.Windows.Media.Visual
    在WPF窗口中显示的每个元素本质上都是Visual对象。可将Visual类视为绘图对象,其中封装了绘图指令、如何执行绘图的附加细节(如透明度、剪裁以及变换设置)以及基本功能(如命中测试)。任何继承自Visual的类都能够在窗口中显示出来。

  • System.Windows.UIElement
    UIElement类增加了对WPF本质特征的支持,如焦点、布局、输入和事件。

  • System.Windows.FrameworkElement
    FrameworkElement类实现了一些全部由UIElement类定义的成员。如UIElement为布局设置了基础,FrameworkElement类提供了支持它的重要属性(如Margin、HorizontalAlignment)

  • System.Windows.Controls.Control
    Control与用户进行交互的元素。

  • System.Windows.Controls.ContentControl
    ContentControl类是所有具有单一内容的控件的基类。

  • System.Windows.Controls.ItemsControl
    ItemsControl类是所有显示选项集合的控件的基类。如ListBox、TreeView...

  • System.Windows.Controls.Panel
    Panel类是所有布局容器的基类。

WPF编程宝典 https://book.douban.com/subject/25785318/

posted @ 2017-06-21 10:24  yangsofter  阅读(1125)  评论(0编辑  收藏  举报