xmlns声明时有一个命名空间的映射,前缀为X,其指的是XAML的首字母X,这个命名空间是专门写给XAML编译器看的,用来引导编译器将XAML代码编译成CLR代码的编译功能命名空间。
1.XAML命名空间概述
一般WPF程序中都会包含有一个映射前缀为X的命名空间,这个就是他的声明形式,这个命名空间包含的类均与解析XAML语言的功能相关,因此我们也把它称作是XAML命名空间或编译功能命名空间
<pre class="wp-block-syntaxhighlighter-code">xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"</pre>
XAML命名空间包含的工具:
![](https://ichistudio.cn/wp-content/uploads/2023/10/屏幕截图-2023-10-21-234624.png)
2. 特征功能
X:Class
这个特征功能,适用于告诉编译器将当前XAML标签的编译结果与后台中指定的类进行合并。
在使用这个功能声明时需要满足以下要求:
- 此特征功能仅能在根节点声明
- 根节点类型要与所指示的合并类型保持一致
- 所指示的类型在声明时必须使用Partial关键字
X:ClassModifier
告诉XAML编译器该便签生成的类具有怎样的访问级别。
对于整个程序集来说,internal和private是等价的。
X:Name
告诉编译器为当前标签生成一个实例,并为这个实例声明一个引用变量
X:FieidModifier
前提是使用了X:Name,为引用变量设置访问级别。默认情况下,字段的访问级别按照面向对象的封装原则被设置成了internal
X:Key与X:Shared
X:Key为XAML定义的资源指定一个唯一的标识符,以便在XAML中引用它。
当多次检索到一个对象时,若得到的都是同一个对象,则X:Shared的值为true;若得到的是该对象的多个副本,则X:Shared的值为false。
XAML编译器会为资源隐式添加X:Shared=”true”。
3. 标记扩展功能
X:Tyoe
用于一些需要指定类型的属性或参数
例如:弹出不同窗口
X:Null
可以显式地对一个特征或属性赋一个空值,常用于清除一些设置,和C#中的NULL用法一样
X:Static
用于一些需要使用静态字段,允许我们访问static声明的成员
4. 指令元素功能
X:Code
可以将本该放置在.cs文件中的后置代码迁移到XAML中,且需要使用XML语言的<![CDATA[…]]>转移标签。
X:Data
在XAML中定义一个XML数据源,以便在XAML中使用数据或数据模板。
X:Data可以用于一些需要指定数据源的属性或参数,例如:XmlDataProvider.Source、XmlDataProvider.XPath、XmlDataProvider.Document等。