XAML元素语法

本文介绍了 XAML 的对象元素语法和属性元素语法。对象元素语法通过声明 XML 元素实例化 CLR 类或结构,.NET 实现的 XAML 有映射规则。属性元素语法可指定其他对象元素作为属性值,与特性语法结果通常相同,但在空白处理等方面有差异。

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

对象元素语法
对象元素语法是一种 XAML 标记语法,它通过声明 XML 元素将 CLR 类或结构实例化。 这种语法类似于如 HTML 等其他标记语言的元素语法。 对象元素语法以左尖括号 (<) 开始,后面紧跟要实例化的类或结构的类型名称。 类型名称后面可以有零个或多个空格,对于对象元素还可以声明零个或多个特性,并用一个或多个空格来分隔每个“特性名=“值””对。 最后,必须存在下列一种情况:

元素和标记必须用正斜杠 (/) 和紧跟的右尖括号 (>) 结尾。

开始标记必须以右尖括号 (>) 结尾。 其他对象元素、属性元素或内部文本可以跟在开始标记后面。 此处可以包含的确切内容通常会受到元素对象模型的约束。 对象元素还必须存在等效的结束标记,并与其他开始标记/结束标记对形成正确的嵌套和平衡。

由 .NET 实现的 XAML 具有一组规则,可将对象元素映射为类型、将特性映射为属性或事件,以及将 XAML 命名空间映射到 CLR 命名空间和程序集。 对于 WPF 和 .NET Framework,XAML 对象元素映射到 Microsoft .NET 类型(如引用的程序集中所定义),而特性映射到这些类型的成员。 在 XAML 中引用 CLR 类型时,还可以访问该类型的继承成员。

例如,下面的示例是一个对象元素语法,该语法实例化 Button 类的一个新实例,而且还指定了一个 Name 特性及其值:
在这里插入图片描述
下例是其中也包括 XAML 内容属性语法的对象元素语法。 其中包含的内部文本将用于设置 TextBox 的 XAML 内容属性 Text。
在这里插入图片描述
对象元素的属性
XAML 中的属性是由多种可能的语法设置的。 根据所设置属性的基础类型系统的特征,可用于特定属性的语法将有所不同。

通过设置属性值,可以在对象存在于运行时对象图中时为对象添加功能或特征。 从对象元素中创建的对象的初始状态基于默认的构造函数行为。 通常,您的应用程序将使用其他一些实例,而不是任何给定对象的完全默认的实例。
属性元素语法
属性元素语法是一种与元素的基本 XML 语法规则略有不同的语法。 在 XML 中,特性的值实际上是一个字符串,唯一可能的变化是使用哪种字符串编码格式。 在 XAML 中,可以指定其他对象元素作为属性的值。 此功能由属性元素语法来启用。 并不将属性指定为元素标记内的特性,而是使用元素的开始标记指定“元素类型名称.属性名称”形式的属性,在其中指定属性的值,然后结束属性元素。

具体而言,该语法以左尖括号 (<) 开头,其后紧跟包含属性元素语法的类或结构的类型名称。 类型名称后面紧跟一个点 (.),然后跟属性的名称,最后跟一个右尖括号 (>)。 对于特性语法,指定类型的已声明公共成员内必须存在该属性。 要赋给属性的值包含在相应的属性元素中。 通常,值作为一个或多个对象元素提供,因为将对象指定为值正是属性元素语法应当实现的方案。 最后,必须提供一个等效的结束标记来指定同一个元素类型名称.属性名称 组合,并与其他元素标记对形成正确的嵌套和平衡。

例如,下面的属性元素语法针对的是 Button 的 ContextMenu 属性。
在这里插入图片描述
当要指定的属性类型是基元值类型(如 String)或是指定了名称的枚举时,也可以用内部文本的形式给出属性元素中的值。 这两个用法在某种程度上并不常见,因为这两种情况都还可以使用更简单的特性语法。 用字符串填充属性元素的一个方案是,对于不是 XAML 内容属性但仍用于表示 UI 文本的属性,该 UI 文本中必须出现特定的空白元素(如换行符)。 特性语法不能保留换行符,但是属性元素语法可以保留换行符,不过前提是用来保留大量空白的功能处于活动状态(有关详细信息,请参见 XAML 中的空白处理)。另一个方案使 x:Uid 指令可应用于属性元素,并因此将其中的值标记为应在 WPF 输出 BAML 中本地化或通过其他技术本地化的值。
属性元素不以 WPF 逻辑树的形式表示。 属性元素不是由实例或对象支持的元素,而只是一个用来设置属性的特定语法。 (有关逻辑树概念的详细信息,请参见 WPF 中的树。)
对于同时支持特性语法和属性元素语法的属性,尽管这两种语法的细微之处(如空白处理)略有不同,但它们的结果通常是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值