Windows Presentation Foundation (WPF) 中的大部分类都从四个类派生而来,这四个类在 SDK 文档中常常被称为基元素类。这些类包括 UIElement、FrameworkElement、ContentElement 和 FrameworkContentElement。DependencyObject 也是一个相关类,因为它是 UIElement 和 ContentElement 的通用基类。
WPF 类中的基元素 API
UIElement 和 ContentElement 都是从 DependencyObject 派生而来,但途径略有不同。此级别上的拆分涉及到 UIElement 或 ContentElement 如何在用户界面上使用,以及它们在应用程序起到什么作用。UIElement 在其类层次结构中也有 Visual,该类为 Windows Presentation Foundation (WPF) 公开较低级别的图形支持。Visual 通过定义独立的矩形屏幕区域来提供呈现框架。实际上,UIElement 适用于支持大型数据模型的元素,这些元素用于在可以称为矩形屏幕区域的区域内进行呈现和布局,在该区域内,内容模型特意设置得更加开放,以允许不同的元素进行组合。ContentElement 不是从 Visual 派生的;它的模型由其他对象(例如,阅读器或查看器,用来解释元素并生成完整的 Visual 供 Windows Presentation Foundation (WPF) 使用)来使用 ContentElement。某些 UIElement 类可用作内容宿主:它们为一个或多个 ContentElement 类(如 DocumentViewer)提供宿主和呈现。ContentElement 用作以下元素的基类:所具有的对象模型较小,并且多用于寻址可能宿主在 UIElement 中的文本、信息或文档内容。
框架级和核心级
UIElement 用作 FrameworkElement 的基类,ContentElement 用作 FrameworkContentElement 的基类。对于此下一级类,原因是要支持与 WPF 框架级相分离的 WPF 核心级,这种分离还存在于 API 如何在 PresentationCore 和 PresentationFramework 程序集之间进行划分。WPF 框架级为基本应用程序需要提供了一个更完整的解决方案,包括用于表示的布局管理器的实现。WPF 核心级提供了一种方法,以充分利用 WPF,而又不至于产生附加程序集开销。对于大多数典型的应用程序开发方案而言,这些级别之间的区别很少有影响,而且一般情况下应将 WPF API 视为一个整体,而无需担心 WPF 框架级与 WPF 核心级之间有何区别。如果您的应用程序设计选择替换大量 WPF 框架级功能,例如,如果您的整体解决方案已经有其自己的用户界面 (UI) 组合和布局实现,则可能需要了解级别之间的差异。
[1] [2] [3] 下一页