XAML 关键字
XAML 语言命名空间 http://schemas.microsoft.com/winfx/2006/xaml 中定义了许多由 XAML 编译器 / 解析器负责处理的关键字:
x:Class
[ 类型 ] 根元素的属性
[ 作用 ] 设置派生自根元素类型的类名(可包含命名空 间)
x:ClassModifier
[ 类型 ] 根元素的属性
[ 条件 ] 必须与 x:Class 一起使用
[ 作用 ] 设置 x:Class 的访问权限,默认为 public ,且其必 须遵循程序语言的规定(如 C# 中可以指定 public 或 internal )
x:Code
[ 类型 ] 任意位置的元素
[ 条件 ] 必须与 x:Class 一起使用
[ 作用 ] 在由 x:Class 指定的类中嵌入程序代码
x:FieldModifier
[ 类型 ] 任意非根元素的属性
[ 条件 ] 必须与 x:Name 属性一起使用
[ 作用 ] 设置为元素生成的字段变量的访问权限,默认 为 internal ,且其必须遵循程序语言的规定(如 C# 中可以指定 public 、 private 等)
x:Key
[ 类型 ] 元素的属性,该元素的父元素实现了 IDictionary 接口
[ 作用 ] 设置字典集合项的键值
x:Name
[ 类型 ] 任意非根元素的属性
[ 条件 ] 必须与 x:Class 一起使用
[ 作用 ] 设置为该元素生成的字段变量的名称,在程序 代码中可通过该变量引用元素对象
x:Shared (暂不明)
[ 类型 ]ResourceDictionary 的子 元素的属性
[ 条件 ] 仅在 XAML 被编译后可用
[ 作用 ] 设置为 false 用以避免多处共享相同的资源实例
x:Subclass
[ 类型 ] 根元素的属性
[ 条件 ] 必须与 x:Class 一起使用
[ 作用 ] 设置派生自 x:Class 的子类名称(可包含 .NET 命名空间), 用于不支持分部类的 .NET 语言
x:TypeArguments (暂不明)
[ 类型 ] 根元素的属性
[ 条件 ] 必须与 x:Class 一起使用
[ 作用 ] 使得根类成为使用指定泛型参数的泛型类,可 用逗号分隔泛型参数列表;对于那些不在默认命名空间中的类型应使用 XML 命名空间前缀予 以限定。
x:Uid
[ 类型 ] 任意任意元素的属性
[ 作用 ] 用一个标识符标记元素,用于本地化
x:XData (暂不明)
[ 类型 ] 元素,其值为 IXmlSerializable 的任意属性
[ 作用 ] 一个任意的 XML 数据岛,它对 XAML 解析器透明
XAML 语言命名空间中还包含一些容易混淆的关键字,但它们实际上是扩展标记。
x:Array
表示 .NET 数组,每个 x:Array 的子元 素都是该数组中的一个元素,使用 x:Type 定义它的类型。
x:Null
表示空引用。
x:Static
引用定义在程序代码中的静态属性、字段、常量或枚举 值。在 XAML 被编译之后,该值甚至可以是相同程序集中的非公有成员。如果该类型不在默认的命名空间中,则 x:Static 的 Member 属性值必须受 XML 命名空间前缀的限制。
x:Type
表示一个 System.Type 的实例,就像 C# 中的 typeof 操作符。如果该类型不在默认的命名空间中,则 x:Type 的 TypeName 属性值必须受 XML 命名空间前缀的限制。
(上面这些关键字之中,凡是需要与 x:Class 一同使用的,都需要定义 code-behind 文件,因为只有生成类的源码,定义如 Button 的字段变量才有意义。另外,在 VS2005 外加 WPF2006CTP 扩展的环境下,不知是因为其余关键字已被废 弃,还是智能感知不够完善,还是其它什么原因,总之 x 命名空间中仅有三个可供选择的关键字。不过还好,像 x:Code 这样的关键字只要直接敲进去还是可以直接使 用的。还有几天就能用上 VS2008 了,到时候再看一看吧。)