本文概述
Xaml或可扩展标记语言是一种声明性语言, 用于在Xamarin.Forms中创建用户界面。
Xaml是基于XML的简单声明性标记语言。 Xaml是区分大小写的强类型标记语言, 它将表示与业务逻辑分开。 XAML元素是CLR对象的XML表示形式。 Xaml用于在层次关系中创建, 初始化和设置对象的属性。 Xaml主要用于设计WPF, Silverlight, Windows Phone和Xamarin Forms中的UI。
XAML工作
Xaml文件将转换为BAML(二进制应用程序标记语言), 它将作为一种资源嵌入到最终的DLL / exe中。
XAML的优点
- XAML基于XML语法。
- XAML代码小而容易。
- 与代码相比, XAML代码易于编写且易于理解。
- 与代码相比, 使用XAML设计UI更容易。
- XAML在UI(XAML)和UI逻辑(C#)之间提供了清晰的分隔。
- XAML将设计人员和开发人员的角色分开。
Xaml的好处
首先, 在XAML中布置用户界面的最大好处是容易。当使用XAML对页面中的可视树控件进行布局时, 可以快速制作应用程序, 并且外观非常明显。
XAML中的代码更具可读性。例如:当控件数据绑定到视图模型中的属性时, XAML语法比C#语法干净得多。
花费数据绑定:
<Label Text="{Binding FirstName}" />
C#数据绑定:
Label firstNameLabel = new Label();
firstNameLabel.SetBinding(Label.Text, "FirstName");
XAML版本变得更具可读性。
最后, Xamarin在Xamarin Studio和Visual Studio中都引入了新版本的XAML预览器。该工具允许开发人员在IDE中查看用户界面。
XAML页面的结构
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:XamarinLifecycle"
x:Class="XamarinLifecycle.MainPage">
<StackLayout>
<!-- Place new controls here -->
<Label Text="Welcome to Xamarin.Forms!"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand" />
</StackLayout>
</ContentPage>
在这里, XAML解析器打开的<ContentPage>元素知道它已经遇到了内容页面, 因此应该实例化。其他UI控件放置在<ContentPage.Content>标记内, XAML解析器在其中实例化以构建UI。
XAML解析器负责XAML文件的工作, 查找需要实例化的元素, 设置其属性, 将适当的控件放置在总体Layout中的适当位置, 执行数据绑定等。一项令人印象深刻的技术。
属性
在XAML中, 属性具有两种风格。第一个是属性属性。这些是最简单有效的理解。在UI组件的标签内声明的属性属性。属性名称将始终与控件的属性名称相同, 但属性的值将始终为字符串。
<Label Text="bURGER AND FRIES" TextColor="Red"/>
我们总是指定一个字符串, 因为XAML接受XML规则。
XAML的第二种属性是元素属性。当属性的值太复杂而无法在简单的字符串中表达时, 使用元素属性。
元素属性倾向于隐藏在视线中。创建空白ContentPage时, 该元素是元素属性。此属性用于保存Page的其余内容, 该内容太复杂而无法在字符串中表达。
XAML和代码之间的区别
XAML比代码更易于维护和修改。 Xaml易于解析, 可以通过软件工具(而非代码)进行编辑。 XAML有时比等效的C#代码更简洁。
<StackLayout>
<!-- Place new controls here -->
<Label Text="Welcome to Xamarin.Forms!"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand" />
</StackLayout>
XAML没有循环, 没有流控制, 没有代数计算语法, 也没有事件处理程序。在这种情况下, C#代码可以帮助我们定义所有这些内容。
档案结构
Xaml文件由两个文件组成。 UI和背后的代码。如果要创建注册表格, 则将具有以下内容:
- Login.Xaml-XAML用户界面
- UI的Login.Xaml.CS-代码隐藏
XAML UI结构
XAML视图由一个页面组成, 可以使用不同的布局, 如果没有布局, 则使用多个视图来创建UI。