使用 Avalonia 开发
最后更新于
最后更新于
Avalonia 允许使用 XAML 标记语言开发应用程序,使用C#(或其他的.NET语言)编码。通常使用 XAML
标记来实现应用程序的外观,使用代码来实现其行为。
XAML
是一种基于 XML
的标记语言,用声明的方式实现应用程序的外观。通常使用它来创建窗体和用户控件,并用控件、形状和图形来填充。
下面的示例展示了使用 XAML
实现包含单个按钮的窗口的外观:
具体来说,该 XAML
分别使用 Window
和 Button
元素定义窗体和按钮。每个元素都配置了属性,例如 Window
元素的 Title
属性,用于指定窗口的标题栏文本。在运行时,Avalonia
将标记中定义的元素和属性转换为 Avalonia
类的实例。例如,XAML
中的 Window
元素被转化为 Window
类的一个实例,它的 Title
属性就是 XAML
中的 Title
属性。
由于 XAML
是基于 XML
的,因此使用它编写的 UI 是在被称为元素树的嵌套元素层次结构中组装的。元素树能够直观且有逻辑地创建和管理 UI。
下图展示了在 Windows
操作系统上运行的上一个示例中 XAML
文件定义的用户界面:
应用程序的主要行为是实现响应用户交互的功能,包括处理事件(例如,单击菜单、工具栏或按钮)以及调用业务逻辑和数据访问逻辑作为响应。
在 Avalonia 中,这种行为可以在与标记相关联的代码中实现。这种类型的代码称为代码隐藏(code-behind)。
下面的示例展示了上一个示例中更新的标记和代码隐藏(请注意,有两个选项卡):
在本例中,代码隐藏实现了一个从Window
类派生的类。x:Class
属性用于将标记与该代码隐藏类相关联。从该代码隐藏类的构造函数中调用 InitializeComponent
方法,用于将标记中定义的 UI 与该代码隐藏类合并。 你可能会注意到 MainWindow
类被声明为 partial
,并且没有发现 InitializeComponent
方法的实现。这是因为 InitializeComponent
方法主体是由 Avalonia.NameGenerator 包在分部类的对应方自动生成的,默认情况下,这个包包含在 Avalonia 模板中。
x:Class
属性和 InitializeComponent
方法的组合能够确保在创建实现时正确初始化。代码隐藏类还为按钮的 Click
(单击)事件实现了一个事件处理程序。单击按钮时,事件处理程序通过在 button
控件上设置属性来更改按钮的文本。