第5问:什么是XAML?
XAML(读作Zammel)是eXtensible Application Markup Language的英文缩写,它是一门基于XML的描述性语言。利用XAML,你可以用XML定义对象或者属性。在处理的时候,XAML文档首先被一个XAML解析器加载,然后解析器会创建相应的对象实例并设置他们的属性。XAML描述了对象,属性和他们之间的关系。使用XAML,你可以创建各种对象,不管他们是图形的还是非图形的。WPF会负责解析XAML文档并根据文档中说定义的内容创建相应的对象实例,同时根据XAML中的描述创建他们之间的关系。
所以,XAML是一个定义了对象和属性的XML文档。并且WPF会加载这个文档到当前内存空间以创建这些对象以及他们之间的关系。
第6问:XAML只是针对WPF的吗?
不是的,XAML并不只是针对WPF而设计的。XAML是一门基于XML的标记语言并且它有多个变种:
WPF XAML用于描述WPF相关的内容,比如WPF对象、控件和文档等。在WPF XAML中我们还有XPS XAML,它可以用于定义一个电子文档的XML表现形式。
Silverlight XAML是WPF XAML的一个子集,专门用于Silverlight应用程序。Silverlight是一个跨平台的浏览器插件。利用Silverlight,我们可以创建丰富多彩的Web内容,包括二维图形,动画,音频和视频等。
WWF XAML用于描述Windows Workflow Foundation(WWF)的内容。WWF引擎会加载XAML文档并按照其中的描述调用工作流。
第7问:能解释一下WPF的总体架构吗?
图4 WPF的总体架构
上图展示了WPF的总体架构。WPF主要由三个部分构成:表现核心(Presentation Core)、表现框架(Presentation Framework)和媒体集成库(MilCore)。在图中,我们还可以看到WPF体系结构中的其他部分,例如DirectX在整个体系中的位置,操作系统与整个WPF系统的交互等等。下面让我们来看看WPF中各个部分都是如何工作的:
User32:负责确定显示窗口及其在屏幕中的位置状态等,其并不参与常见控件的呈现。DirectX: - 如前所述,WPF在本质上是使用DirectX的。DirectX负责跟硬件驱动通信并显示窗口和窗口内容。
Milcore:Mil是媒体集成库(Media Integration Library)的简称。这部分是非托管代码,因为它就像一座桥梁,负责托管的WPF和非托管的DirectX/User32 API之间的通信。
Presentation core :这是WPF所公布出来的底层API。主要包括WPF的一些基本类型,例如UIElement,2D元素,3D元素,几何元素等。它们是Presentation Framework所包括元素的基础。
Presentation framework:- 这是WPF所公布出来的高层API。它主要包括WPF的窗口、面板、样式,布局等高层WPF类型,通过这些内容,我们可以构建丰富的应用程序界面。