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了,到时候再看一看吧。)