XAML 命名空间如何与代码定义和类型库相关 无论是其一般用途还是 Windows 运行时应用编程的应用上,XAML 都用于声明对象、这些对象的属性以及表示为层次结构的对象-属性关系。你在 XAML 中声明的对象受其他编程技术和语言定义的类型库或其他表示支持。这些库可能是: Windows 运行时的内置对象集合。这是一个固定的对象集合,从 XAML 访问这些对象使用内部类型映射和激活逻辑。Microsoft 或第三方提供的分布式库。该库表示你的应用包含的以及你的包重新分发的第三方控件的定义。你自己的库(属于你的项目的一部分),它包含部分或所有用户代码定义。 支持类型信息与特定 XAML 命名空间定义相关联。XAML 框架(如 Windows 运行时)可聚合多个程序集和多个代码命名空间,以映射到单个 XAML 命名空间。这就支持涉及更大的编程框架或技术的 XAML 词汇表概念。XAML 词汇表可能非常大—例如该引用中为 Windows 运行时应用记录的大部分 XAML 构成单个 XAML 词汇表。XAML 词汇表也可扩展:通过向支持代码定义添加类型来扩展它,从而确保在代码命名空间(已经用作 XAML 词汇表的映射的命名空间来源)中包含这些类型。 XAML 处理器在创建运行时对象表示时,可查找与该 XAML 命名空间关联的支持程序集的类型和成员。出于此原因,XAML 可用作一种形式化和交换对象构造定义行为的方式,并且 XAML 可用作 Windows 应用商店应用的 UI 定义技术。 典型 XAML 标记中使用的 XAML 命名空间 XAML 文件几乎总是在其根元素中声明一个默认 XAML 命名空间。默认 XAML 命名空间定义了无需使用前缀来限定即可声明哪些元素。例如,如果声明一个元素 ,XAML 分析器期望一个 Balloon 元素存在并且在默认的 XAML 命名空间中是有效的。相反,如果 Balloon 不在已定义的默认 XAML 命名空间中,就必须使用一个前缀限定该元素名称,例如 <party:Balloon />。该前缀表明该元素存在于与默认命名空间不同的 XAML 命名空间中,你必须将一个 XAML 命名空间映射到前缀 party,然后才能使用此元素。 XAML 命名空间适用于在其上声明它们的特定元素,也适用于该元素在 XAML 结构中包含的任何元素。出于此原因,XAML 命名空间几乎总是在 XAML 文件的根元素上声明,以充分利用这种继承性。 默认和 XAML 语言 XAML 命名空间声明 在大多数 XAML 文件的根元素中,有两个 xmlns 声明。第一个声明将一个 XAML 命名空间映射为默认命名空间:xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation” 这是多个也使用 XAML 作为 UI 定义标记格式的预处理器 Microsoft 技术中使用的相同 XAML 命名空间标识符。使用相同的标识符是经过深思熟虑的,在将以前定义的 UI 迁移到使用 C++、C# 或 Visual Basic 的 Windows 运行时应用时很有用。 第二个声明映射 XAML 定义的语言元素的一个独立的 XAML 命名空间,(通常)将它映射到 “x:” 前缀:xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"此 xmlns 值和它所映射到的 “x:” 前缀对于在多个使用 XAML 的前置任务 Microsoft 技术中使用的定义也是相同的。这些声明之间的关系是,XAML 是一种语言定义,Windows 运行时是一种实现,它使用 XAML 作为语言并定义一个特定的词汇表,它的类型在这里供 XAML 引用。XAML 语言指定某些语言元素,其中每个元素应可通过适用于 XAML 命名空间的 XAML 处理器实现进行访问。项目模板、示例代码和语言特性文档遵循 XAML 语言 XAML 命名空间的 “x:” 映射约定。XAML 语言命名空间定义多个常用的功能,甚至对于使用 C++、C# 或 Visual Basic 的基本 Windows 运行时应用,这些功能也是必要的。例如,为了将任何代码隐藏通过分部类联接到 XAML 文件,必须将该类命名为相关 XAML 文件的根元素中的 x:Class 属性。或者,任何在 XAML 页面中定义为 ResourceDictionary 中一个键资源的元素必须在相关的对象元素上设置 x:Key 特性。