第8问:WPF中的名字空间和类层次是怎么样的?
图5 WPF的名字空间和类层次
在WPF中,有10个比较重要的名字空间和类:
•System.Threading.DispatcherObject
所有的WPF对象都派生自DispatcherObject。我们知道WPF工作在Single Threading Apartment(STA)模型下,DispatcherObject的主要职责就是处理线程的并发和同步。当有消息发生的时候,比如鼠标点击或者是按钮被按下,这些消息将被发送到DispatcherObject,它将负责验证代码是否运行在当前线程。在接下来的章节中,我们将详细介绍WPF的线程是如何工作的。
•System.Windows.DependencyObject
微软在设计WPF的时候,考虑的是一种基于属性的架构。换句话说,对象的行为主要是用属性来表现的,而不是方法,函数和事件。现在,我们只需要记住它的定义就可以了。在下面的章节中,我们将有专门的问题来论述这个主题。
•System.Windows.Media.Visual
Visual是一个显示支持类,用于抽象所有关于绘制显示的描述。它是一个抽象类,每个Framework Element对象都必须继承该类。该类的主要作用是为WPF提供呈现支持,主要包括输出显示,透明度,坐标转换,区域剪切 等。另外,Visual类同时是非托管的MilCore.dll和托管的WPF类之间的桥梁。如果一个类从Visual派生,它就可以在窗口中显示出来。这样,当你想创建你自定义的用户界面时,你就可以使用Visual对象。
图6 Visual是WPF和Micore.dll之间的桥梁
•System.Windows.UIElement
UIElement类主要处理三个方面的内容:布局,输入和事件。该类继承自Visual类,其中定义了很多与输入和焦点有关的特性,例如键盘事件,鼠标和笔输入等。同时,该类还包括一些与WPF事件模型有关的API。
•System.Windows.FrameworkElement
FrameworkElement派生自UIElement,在UIElement的基础上,它添加了很多其他功能,比如水平对齐,竖直对齐,边距,逻辑树、对象生命周期事件、支持数据绑定和动态资源引用、支持样式和动画等等。
•System.Windows.Shapes.Shape
这个类可以用于创建基本的图形,比如长方形,多边形,椭圆,线和路径等。
•System.Windows.Controls.Control
这个类提供一些基本的界面控件,比如文本框。按钮,列表框等。另外,它还添加了一些扩展属性,比如字体,前景色和背景色等。
•System.Windows.Controls.ContentControl
ContentControl用于显示连续的一段内容。利用ContentControl,我们可以在面板上利用Label显示多行文本。
•System.Windows.Controls.ItemsControl
这是所有能够支持多个条目显示的控件的基类,例如列表框和树形视图。
•System.Windows.Controls.Panel
面板(Panel)可以用做所有布局的容器。它可以包含一个或多个子控件并且可以将他们按照布局单位进行排列。这些容器是WPF布局系统的基础,并且合理地使用容器是对你的界面内容进行灵活布局的关键。