XAML(eXtensible Application Markup Language)可扩展应用程序标记语言, 是 Microsoft 创建的基于 XML 的语言,作为用于实例化对象和初始化对象以及组织父子层次结构中的对象的编程代码的替代方法。 XAML 已适应 .NET 框架中的多种技术,但它在定义 Windows Presentation Foundation (WPF) 、Silverlight、Windows 运行时和通用 Windows 平台 (UWP) 中的用户界面布局方面找到其最大的实用工具。
XAML 允许开发人员使用标记而不是代码 Xamarin.Forms 在应用程序中定义用户界面。 XAML 在程序中从不需要,但它通常比等效代码更简洁且更直观一 Xamarin.Forms 致,并且可能具有工具性。 XAML 非常适合用于流行的 MVVM (Model-View-ViewModel) 应用程序体系结构:XAML 定义通过基于 XAML 的数据绑定链接到 ViewModel 代码的视图。
在 XAML 文件中,开发人员可以使用所有视图、布局和页面以及自定义类 Xamarin.FormsXamarin.Forms 来定义用户界面。 XAML 文件可以编译或嵌入到可执行文件中。 无论哪种方式,在生成时分析 XAML 信息以查找命名对象,并在运行时再次分析以实例化并初始化对象,以及在这些对象和编程代码之间建立链接。
与等效代码相比,XAML 具有多个优点:
XAML 通常比等效代码更简洁且更具可读性。
XML 中固有的父子层次结构允许 XAML 以更高的视觉清晰度模拟用户界面对象的父子层次结构。
XAML 可以轻松地由程序员手动编写,但也适合使用可视化设计工具进行工具和生成。
还有一些缺点,主要与标记语言固有的限制相关:
XAML 不能包含代码。 所有事件处理程序都必须在代码文件中定义。
XAML 不能包含重复处理的循环。 (但是,多个视觉对象(最值得注意的是)可以基于其 collection.) 中的对象生成 Xamarin.Forms ListView 多个 ItemsSource
子)
XAML 不能包含条件处理 (但是,数据绑定可以引用基于代码的绑定转换器,该转换器可有效地允许某些条件处理。)
XAML 通常无法实例化未定义无参数构造函数的类。 (但是,有时有一种方法可以解决此限制。)
XAML 通常不能调用方法。 (,有时可以克服此限制。)
还没有可视化设计器用于生成应用程序中的 Xamarin.Forms XAML。 所有 XAML 都必须是手动编写的,但可以在XAML 热重载 2019 Visual Studio 或 Visual Studio for Mac 中使用它们来编辑屏幕设计。 即使是具有大量 XAML 经验的开发人员,也知道试验是值得奖励的。
XAML 基本上是 XML,但 XAML 具有一些独特的语法功能。 其中最重要的是:
属性元素
附加属性
标记扩展
这些功能 不是 XML 扩展。 XAML 是完全合法的 XML。 但这些 XAML 语法功能以独特的方式使用 XML。 以下文章中详细介绍了这些示例,最后介绍了使用 XAML 实现 MVVM。