XAML的命名空间和命名空间映射

什么是 XAML 命名空间?
XAML命名空间实际上是 XML 命名空间概念的扩展。 指定 XAML 命名空间的方法依赖于 XML 命名空间语法、将 URI 用作命名空间标识符以及使用前缀提供从相同标记源引用多个命名空间等约定。 XML 命名空间的 XAML 定义增添的主要概念是,XAML 命名空间表示标记用法唯一性范围,还影响标记实体可如何受特定 CLR 命名空间和引用程序集支持。 后者也会受 XAML 架构上下文概念影响。 但是出于 WPF 如何处理 XAML 命名空间的目的,对于默认 XAML 命名空间、XAML 语言命名空间以及任何其他由 XAML 标记直接映射到特定支持 CLR 命名空间和引用程序集的 XAML 命名空间,可通常考虑为 XAML 命名空间。

WPF 和 XAML 命名空间声明
在许多 XAML 文件的根标记中的命名空间声明内,通常可看到两个 XML 命名空间声明。 第一个声明默认映射整个 WPF 客户端/框架 XAML 命名空间:
在这里插入图片描述
第二个声明映射单独的 XAML 命名空间,(通常)将其映射到 x: 前缀。
在这里插入图片描述
这些声明之间的关系是 x: 前缀映射支持 XAML 语言定义中的内部函数,并且 WPF 是将 XAML 用作语言并为 XAML 定义对象词汇的一种实现。 因为 WPF 词汇用法远比 XAML 内部函数用法常见,因此默认映射 WPF 词汇。
此 SDK 内,映射 XAML 语言内部函数支持的 x: 前缀约定后跟项目模板、示例代码和语言功能文档。 XAML 命名空间定义许多常用功能,即使对于基本 WPF 应用程序而言,这些功能也是必需的。 例如,若要通过分部类将任何代码隐藏加入到 XAML 文件,必须将该类命名为相关 XAML 文件根元素中的 x:Class 属性。 或者,XAML 页面中定义的任何要作为键控资源访问的元素都应在当前元素上设置 x:Key 属性。
映射到自定义类和程序集
在 xmlns 前缀声明内使用一系列标记可将 XML 命名空间映射到程序集,方法类似于将标准 WPF 和 XAML 内部函数 XAML 命名空间映射到前缀。
此语法采用以下可能的已命名标记和以下值:
clr-namespace: 在程序集中声明的 CLR 命名空间,此程序集包含要作为元素公开的公共类型。
assembly= 包含部分或全部引用 CLR 命名空间的程序集。 此值通常为程序集的名称而不是路径,且不包含扩展名(例如 .dll 或 .exe)。 程序集路径必须创建为包含要映射的 XAML 的项目文件中的项目引用。 版本控制和强名称签名,assembly值可以是字符串由定义AssemblyName,而不是简单的字符串名称。
请注意,分隔 clr-namespace 标记和其值的字符是冒号 (😃,而分隔 assembly 标记和其值的字符为等号 (=)。 这两个标记之间应使用的字符是分号。 此外,不包括任何空白区域任何位置的声明中。

基本自定义映射示例
如下代码定义一个示例自定义类:
C#
在这里插入图片描述
XAML
在这里插入图片描述