XAML

Extensible Application Markup Language(XAML,可扩展的应用程序标记语言)是基于 XML 的语言,可替代编程代码执行对象的实例化和初始化并按父子层次结构来组织这些对象。

XAML 使开发人员能够使用标记而不是代码定义 .NET Multi-platform App UI (.NET MAUI) 应用中的用户界面。 XAML 在 .NET MAUI 应用中不是必需的,但建议使用它来开发 UI,因为它通常更简洁、更直观、更连贯,并且具有工具支持。 XAML 也非常适合与模型-视图-视图模型 (MVVM) 模式一起使用,其中 XAML 定义视图,而视图通过基于 XAML 的数据绑定链接到视图模型代码。

在 XAML 文件中,可使用所有 .NET MAUI 视图、布局和页面以及自定义类来定义用户界面。 XAML 文件既可编译,也可以嵌入应用包中。 无论是哪种情况,都会在生成时分析 XAML 以查找命名对象,在运行时对 XAML 表示的对象进行实例化和初始化。

与等效代码相比,XAML 有多个优势:

  • XAML 通常比等效代码更简洁易读。
  • XML 固有的父子层次结构使 XAML 能够以更清晰的视觉效果来模拟用户界面对象的父子层次结构。

但它也有一些缺点,主要与标记语言固有的局限性有关:

  • XAML 不能包含代码。 所有事件处理程序必须在代码文件中定义。
  • XAML 不能包含用于重复性处理的循环。 不过,可使用一些控件显示数据集合,如 ListViewCollectionView
  • XAML 不能包含条件性处理。 不过,数据绑定可引用基于代码的绑定转换器,该转换器可有效实现某些条件性处理。
  • XAML 通常无法实例化那些未定义无参数构造函数的类,尽管有时可克服此限制。
  • XAML 通常无法调用方法,尽管有时可克服此限制。

.NET MAUI 应用中没有用于生成 XAML 的视觉设计器。 所有 XAML 须手动编写,但可在编辑 UI 时使用 XAML 热重载查看 UI。

XAML 基本上就是 XML,但 XAML 有一些独特的语法特性。 其中最重要的是:

  • 属性元素
  • 附加属性
  • 标记扩展

这些特性不是 XML 扩展。 XAML 是标准的 XML。 但这些 XAML 语法特性以独特的方式使用 XML。