2024年4月3日发(作者:业又绿)
本主题介绍可扩展应用程序标记语言 (XAML) 语言的功能,并演示如何使用
XAML 编写
Windows
Presentation Foundation (WPF) 应用程序。本主题专门
介绍了
Windows
Presentation Foundation (WPF) 实现的 本身是
比 Windows Presentation Foundation (WPF) 更广泛的一个语言概念。
具有流控制支持的声明性语言XAML 简化了为 .NET Framework 编程模型创
建 UI 的过程。您可以在声明性 XAML 标记中创建可见的 UI 元素,然后使用代
码隐藏文件(通过分部类定义与标记相连接)将 UI 定义与运行时逻辑相分离。
在 XAML 中混合代码和标记的功能很重要,因为 XML 本身是声明性的,不会为
流控制真正建议一个模型。基于 XML 的声明性语言非常直观,可以为用户(尤
其是具有 Web 设计和技术背景的人员)创建从原型到生产的各种界面。与其他
大多数标记语言不同,XAML 直接呈现托管对象的实例化。这种常规设计原则简
化了使用 XAML 创建的对象的代码和调试访问。
XAML 文件是指通常使用 .xaml 扩展名的 XML 文件。
下面的 XAML 示例演示了小标记在创建作为 UI 一部分的按钮时的必要性。
创建的按钮通过主题样式获得默认的可视化表示形式,通过其类设计获得默认的
行为。
XAML 对象元素
XAML 有一组规则,这些规则将对象元素映射为类或结构,将属性
(Attribute) 映射为属性 (Property) 或事件,并将 XML 命名空间映射为 CLR
命名空间。XAML 元素映射为被引用程序集中定义的 Microsoft .NET 类型,而
属性 (Attribute) 则映射为这些类型的成员。
上面的示例指定了两个对象元素:<STACKPANEL>(具有一个结束标记)和
<BUTTON>同样具有多个属性;下一节将介绍属性)。字符串 StackPanel 和
Button 都将映射为某个类的名称,该类由 WPF 定义并且是 WPF 程序集的一部
分。在指定对象元素标记时,可以为 XAML 处理创建一条指令,以便在加载 XAML
页时创建指定类的一个新实例。每个实例都是通过调用基础类或结构的默认构造
函数并对结果进行
存储
而创建的。为了可用作 XAML 中的对象元素,该类或结构
必须公开一个公共的默认(无参数)构造函数。
设置属性
XAML 中的属性是通过使用各种可能的语法在对象元素上设置属性来设置的。
根据所设置的属性的特征,给定属性可使用的语法会有所不同。
通过设置属性值,可以为对象元素添加功能或特征。对象元素的基础对象实
例的初始状态基于默认的构造函数行为。通常,您的应用程序将使用其他一些实
例,而不是任何给定对象的完全默认的实例。
属性语法
在 XAML 中,属性 (Property) 常常可以表示为属性 (Attribute)。属性
(Attribute) 语法是最简单的属性 (Property) 设置语法,并将成为过去使用标
记语言的开发人员可以使用的最直观的语法。例如,以下标记将创建一个具有红
色文本和蓝色背景的按钮,还会创建指定为 Content 的显示文本。
属性元素语法
对于一个对象元素的某些属性 (Property),属性 (Attribute) 语法是不可
能实现的,因为提供属性 (Property) 值所需的对象或信息不能充分地表示为简
单的字符串。对于这些情况,可以使用另一个语法,即属性元素语法。属性元素
语法用标记的内容设置包含元素的引用的属性。一般而言,内容就是作为属性值
的类型的某个对象(值设置实例通常被指定为另一个对象元素)。属性元素本身
的语法为 <类型名称.属性>。指定内容之后,必须用一个结束标记结束属性元素,
就像其他任何元素(语法为 )一样。对于同时支持属性 (Attribute) 和属性
(Property) 元素语法的属性 (Property),尽管这两种语法的细微之处(如空白
处理)略有不同,但它们的结果通常是一样的。如果可以使用属性 (Attribute)
语法,那么使用属性 (Attribute) 语法通常更为方便,且能够实现更为精简的
标记,但这只是一个风格的问题,而不属于技术限制。下面的示例演示了在前面
的属性 (Attribute) 语法示例中设置的相同属性 (Property),但这次对
Button 的所有属性 (Property) 使用了属性 (Property) 元素语法。
XAML 的属性 (Property) 元素语法表示了与标记的基本 XML 解释之间的
巨大背离。对于 XML,<类型名称.属性> 代表了另一个元素,该元素仅表示一个
子元素,而与 TypeName 父级之间没有必然的隐含关系。在 XAML 中,<类型名
2024年4月3日发(作者:业又绿)
本主题介绍可扩展应用程序标记语言 (XAML) 语言的功能,并演示如何使用
XAML 编写
Windows
Presentation Foundation (WPF) 应用程序。本主题专门
介绍了
Windows
Presentation Foundation (WPF) 实现的 本身是
比 Windows Presentation Foundation (WPF) 更广泛的一个语言概念。
具有流控制支持的声明性语言XAML 简化了为 .NET Framework 编程模型创
建 UI 的过程。您可以在声明性 XAML 标记中创建可见的 UI 元素,然后使用代
码隐藏文件(通过分部类定义与标记相连接)将 UI 定义与运行时逻辑相分离。
在 XAML 中混合代码和标记的功能很重要,因为 XML 本身是声明性的,不会为
流控制真正建议一个模型。基于 XML 的声明性语言非常直观,可以为用户(尤
其是具有 Web 设计和技术背景的人员)创建从原型到生产的各种界面。与其他
大多数标记语言不同,XAML 直接呈现托管对象的实例化。这种常规设计原则简
化了使用 XAML 创建的对象的代码和调试访问。
XAML 文件是指通常使用 .xaml 扩展名的 XML 文件。
下面的 XAML 示例演示了小标记在创建作为 UI 一部分的按钮时的必要性。
创建的按钮通过主题样式获得默认的可视化表示形式,通过其类设计获得默认的
行为。
XAML 对象元素
XAML 有一组规则,这些规则将对象元素映射为类或结构,将属性
(Attribute) 映射为属性 (Property) 或事件,并将 XML 命名空间映射为 CLR
命名空间。XAML 元素映射为被引用程序集中定义的 Microsoft .NET 类型,而
属性 (Attribute) 则映射为这些类型的成员。
上面的示例指定了两个对象元素:<STACKPANEL>(具有一个结束标记)和
<BUTTON>同样具有多个属性;下一节将介绍属性)。字符串 StackPanel 和
Button 都将映射为某个类的名称,该类由 WPF 定义并且是 WPF 程序集的一部
分。在指定对象元素标记时,可以为 XAML 处理创建一条指令,以便在加载 XAML
页时创建指定类的一个新实例。每个实例都是通过调用基础类或结构的默认构造
函数并对结果进行
存储
而创建的。为了可用作 XAML 中的对象元素,该类或结构
必须公开一个公共的默认(无参数)构造函数。
设置属性
XAML 中的属性是通过使用各种可能的语法在对象元素上设置属性来设置的。
根据所设置的属性的特征,给定属性可使用的语法会有所不同。
通过设置属性值,可以为对象元素添加功能或特征。对象元素的基础对象实
例的初始状态基于默认的构造函数行为。通常,您的应用程序将使用其他一些实
例,而不是任何给定对象的完全默认的实例。
属性语法
在 XAML 中,属性 (Property) 常常可以表示为属性 (Attribute)。属性
(Attribute) 语法是最简单的属性 (Property) 设置语法,并将成为过去使用标
记语言的开发人员可以使用的最直观的语法。例如,以下标记将创建一个具有红
色文本和蓝色背景的按钮,还会创建指定为 Content 的显示文本。
属性元素语法
对于一个对象元素的某些属性 (Property),属性 (Attribute) 语法是不可
能实现的,因为提供属性 (Property) 值所需的对象或信息不能充分地表示为简
单的字符串。对于这些情况,可以使用另一个语法,即属性元素语法。属性元素
语法用标记的内容设置包含元素的引用的属性。一般而言,内容就是作为属性值
的类型的某个对象(值设置实例通常被指定为另一个对象元素)。属性元素本身
的语法为 <类型名称.属性>。指定内容之后,必须用一个结束标记结束属性元素,
就像其他任何元素(语法为 )一样。对于同时支持属性 (Attribute) 和属性
(Property) 元素语法的属性 (Property),尽管这两种语法的细微之处(如空白
处理)略有不同,但它们的结果通常是一样的。如果可以使用属性 (Attribute)
语法,那么使用属性 (Attribute) 语法通常更为方便,且能够实现更为精简的
标记,但这只是一个风格的问题,而不属于技术限制。下面的示例演示了在前面
的属性 (Attribute) 语法示例中设置的相同属性 (Property),但这次对
Button 的所有属性 (Property) 使用了属性 (Property) 元素语法。
XAML 的属性 (Property) 元素语法表示了与标记的基本 XML 解释之间的
巨大背离。对于 XML,<类型名称.属性> 代表了另一个元素,该元素仅表示一个
子元素,而与 TypeName 父级之间没有必然的隐含关系。在 XAML 中,<类型名