• WPF体系结构


      WPF使用一个多层的体系结构。在WPF应用程序中各层的工作情况如下

    PresentationFramework.dll、PresentationCore.dll、WindowsBase.dll (托管的WPF API)
    milcore.dll、WindowsCodecs.dll (媒体集成层)
    Direct3D、User32

    PersentationFramework.dll、PresentationCore.dll、WindowsBase.dll负责托管WPF API,milcore.dll和WindowsCodecs.dll是媒体集成层。

    • PersentationFramework.dll包含WPF顶层的类型,包括哪些表示窗口、面板以及其他类型控件的类型。他还实现了高层编程抽象,如样式。开发人员直接使用的大部分类都来自这个程序集
    • PresentationCore.dll包含了基础类型,如UIElement类和Visual类,所有形状类和控件类都继承自这两个类。如果不需要窗口和控件抽象层的全部特征,可以使用这一层,并且仍能用WPF的渲染引擎。
    • WindowsBase.dll包含了更多基本要素,这些要素具有在WPF之外重用的潜能。
    • milcore.dll是WPF渲染系统的核心,也是媒体集成层的基础。
    • WindowsCodes.dll是一套提供图像支持的低级API(例如,处理、显示以及缩放位图与JPEG图像)
    • Direct3D是一套地基API,WPF应用程序中的所有图形都是由它渲染
    • User32用于决定哪些程序实际占有桌面的哪一部分。

    需要明确的是在WPF中所有的绘图都是由Direct3D渲染的。

      WPF的类层次结构

    1. System.Threading.DispatcherObject类——WPF应用程序使用单线程亲和模型,这意味着整个用户界面由一个单独的线程拥有,从另一个线程与用户界面元素进行交互是不安全的。为了更方便的使用此模型,,每一个WPF应用程序由一个协调消息(从键盘输入、鼠标移动到框架处理)的调度程序管理。通过继承DispatcherObject类,用户界面的每一个元素都可以检查代码是否在正确的县城上运行,并且可以访问调度程序为用户界面线程封送代码。(31章中细讲)
    2. System.Windows.DependencyObject类——在WPF中,和屏幕上的元素进行交互主要通过属性进行。WPF的设计者决定创建一个更加庞大的属性模型,这就是依赖项(dependency property)属性,通过继承DependencyObject类,WPF类可以获得对依赖项属性的支持。
    3. System.Windows.Media.Visual类——在WPF窗口中显示的每一个元素,在背之上都是一个Visual对象。可以将Visual类看做是一个绘图对象,Visual类还在托管的WPF库和渲染桌面的milcore.dll程序集之间提供了链接。如果愿意使用轻量级的APT而不想使用WPF的高级框架特征,可以直接对Visual对象编程(14章讲述)
    4. System.Windows.UIElement类——UIElement类为WPF本质特征提供支持,如布局、输入、焦点以及事件。在WPF中实现了一个增强的成为路由事件的路由系统(第5章),在UIElement类中还添加了对命令的支持(第9章)
    5. System.Windows.FrameworkElement类——FrameworkElement类是WPF核心继承类的终点,该类中实现了一些全部由UIElement类定义的成员。
    6. System.Windows.Shapes.Shape类——基本的形状类都继承自该类,这些形状类可以和更传统的Windows小组件一起使用(第12章讲述)。
    7. System.Windows.Controls.Control类——控件是可以和用户进行交互的元素。Control类为设置字体和前景色与背景色提供了附加功能,还有模板支持(第17章)。
    8. System.Windows.Controls.ContentControl类——ContentControl类是所有具有单一内容的控件的基类。控件中的单一内容可以是从普通的字符串乃至具有其他形状和控件组合的布局面板(第6章)。
    9. System.Windows.Controls.ItemsControl类——ItemsControl类是所有显示选项集合的控件的基类,如ListBox控件和TreeView控件,在第19章将学习数据绑定,将开始使用列表控件,在22章还会进一步的学习列表控件。
    10. System.Windows.Controls.Panel类——Panel类是所有布局器的基类,布局容器是可以包含一个或多个子元素,并根据特定的规则对子元素进行排列的元素。这些容器是WPF布局系统的基础(第3章)。
  • 相关阅读:
    vue.js多选列表(绑定到一个数组)
    vue.js选择列表
    vue.js单选按钮
    Vue.js逆转消息
    TTL
    [转]为何需要调用“super viewDidLoad
    Tomcat 发布war包提示war包超出大小修改
    【转】 MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?
    【转】 #1451
    【转】互联网网页响应速度测试标准
  • 原文地址:https://www.cnblogs.com/renhao0118/p/3207425.html
Copyright © 2020-2023  润新知