[笔记/简译]XAML揭秘(8)

本文详细介绍了XAML语言中各种关键字的作用及使用条件,包括x:Class、x:Code、x:Name等,并解释了这些关键字如何帮助开发者在XAML文件中嵌入代码和管理元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值