Xamarin XAML语言教程XAML文件结构与解析XAML

Xamarin XAML语言教程XAML文件结构与解析XAML

XAML文件结构

在上文中,我们创建XAML文件后,会看到类似图1.16所示的结构

图1.16  结构

其中,.xaml文件和.xaml.cs文件就是XAML文件的结构。以下就是对这两个文件的介绍。

  • .xaml文件中包含的就是XAML代码,实际上就是XML语法。官方的说法:它是一个声明对象的语言,为我们创建对象提供便捷的一种方式。与HTML类似,特点是用来描述用户接口 (UI)内容。
  • 通常我们把与.xaml文件关联的.xaml.cs文件叫作代码隐藏文件。如果开发者引用.xaml中的任何一个事件(如Button的Click 事件),,将在这个文件中编写对应的事件处理代码。

解析XAML

在上文中我们创建XAML文件后,会看到类似以下3种代码。

(1)第一种是使用Visual Studio创建项目后创建XAML文件显示的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"
  • x:Class="Hello.XAMLPage">
  • <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
  • </ContentPage>

(2)第二种是使用Xamarin Studio创建项目后创建XAML文件显示的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"
  • x:Class="Hello.MyPage">
  • <ContentPage.Content>
  • </ContentPage.Content>
  • </ContentPage>

(3)第三种是在创建项目的同时创建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:Hello"
  • x:Class="Hello.MainPage">
  • <Label Text="Welcome to Xamarin Forms!"
  • VerticalOptions="Center"
  • HorizontalOptions="Center" />
  • </ContentPage>

这3种文件代码的公共部分为如下:

  • <?xml version="1.0" encoding="utf-8" ?>
  • <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
  • xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  • x:Class="Hello.MainPage">
  • </ContentPage>

以下就是对XAML公共默认的部分进行说明。

  1. 第一行是对XML简单的说明,其中包含了XML版本号以及编码格式。
  2. 第二行代码至最后一行代码的功能是构建界面所需要的内容。其中,第二行和第三行使用两个XML命名空间(xmlns)声明引用了URL。开发者不需要知道这些URL指向的具体内容。他们只是Xamarin和Microsoft拥有的URL,它们基本上充当版本标识符。第一个XML命名空间声明意味着在XAML文件中定义了没有前缀的标签,它引用Xamarin.Forms中的类,如ContentPage。第二个命名空间声明定义了x的前缀,它用于XAML本身固有的几个元素和属性,(理论上)由XAML的所有实现支持。

注意:这些元素和属性根据嵌入在URL中的年份略有不同。Xamarin.Forms支持2009 XAML规范,但不是所有的。

  1. 第四行代码。在声明x前缀之后,该前缀立即用于名为Class的属性,这是因为使用这个x前缀在XAML文件中非常普遍。例如,Class简称为x:Class。x:Class指定.NET类名称。

注意:x:Class属性只能出现在XAML文件的根元素中,以定义派生的C#类。

对于x:Class指定类的定义,开发者可以在.xaml.cs文件中看到,代码类似于以下代码:

  • using System;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  • using Xamarin.Forms;
  • namespace Hello
  • {
  • public partial class MainPage : ContentPage
  • {
  • public MainPage()
  • {
  • InitializeComponent();
  • }
  • }
  • }

注意:x:Class的值所指示的类型在声明的时候必须使用partial关键字。这样由XAML解析成的类和.xaml.cs文件里定义的部分就合二为一了。正是由于这种partial机制,我们可以把类的逻辑代码留在.xaml.cs文件中,并用C#语言来实现,而把那些于声明及布局UI元素相关的代码分离出来,实现UI以逻辑分离。

时间: 2024-10-10 09:31:38

Xamarin XAML语言教程XAML文件结构与解析XAML的相关文章

Xamarin XAML语言教程基础语法篇大学霸

前  言 Xamarin是一个跨平台开发框架.它可以用来开发iOS.Android.Windows Phone和Mac的应用程序.使用Xamarin框架中的Forms子框架,用户可以一次性的开发多个平台的应用,如iOS.Android.Windows Phone,从而节省大量的开发时间. 在Xamarin.Forms中,用户可以直接使用XAML语言直接进行界面设计.这样,就可以将界面和逻辑代码分离,使得应用程序的结构更加清晰.为了满足大家的开发需求,本教程着眼于Xamarin.Forms开发,详

Xamarin XAML语言教程构建ControlTemplate控件模板 (四)

Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添加到页面中,然后在ResourceDictionary中实现模板的构建即可,其语法形式如下: <Page> <Page.Resources> <ResourceDictionary> <ControlTemplate x:Key="KeyName"

Xamarin XAML语言教程ContentView视图作为自定义视图的父类

Xamarin XAML语言教程ContentView视图作为自定义视图的父类 自定义视图的父类:ContentView视图可以作为自定义视图的父类. [示例14-2]以下将自定义一个颜色视图.具体的操作步骤如下: (1)创建一个Forms Xaml View文件,命名为ColorView. (2)打开ColorView.xaml文件,编写代码,构建自定义颜色视图.代码如下: <?xml version="1.0" encoding="UTF-8"?>

Xamarin XAML语言教程模板视图TemplatedView(二)

Xamarin XAML语言教程模板视图TemplatedView(二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于中TemplatedView.代码如下: <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://s

Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色

Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色 在图12.10~12.12中我们会看到在各个平台下活动指示器的颜色是不一样的.Android的活动指示器默认是深粉色的:iOS的活动指示器是灰色的:Windows Phone的活动指示器是蓝色的.如果开发者想要让各个平台下活动指示器的颜色统一,可以使用ActivityIndicator定义的Color属性,其语法形式如下: <ActivityIndicator Color="activityIndicatorC

Xamarin XAML语言教程基本视图ContentViewg构架范围框架

Xamarin XAML语言教程基本视图ContentViewg构架范围框架 ContentView视图基本上有三个作用,下面依次介绍. (1)范围框架:ContentView视图可以构建一个范围框架,用来约束其中的子元素. [示例14-1:ContentViewScopeFrame]以下将使用ContentView来构建一个范围框架,以此来约束其子元素.代码如下: <?xml version="1.0" encoding="utf-8" ?> <

Xamarin XAML语言教程基本页面ContentPage占用面积

Xamarin XAML语言教程基本页面ContentPage占用面积 基本页面和基本视图都是在开发应用程序时最为常用的.本章将讲解有关基本页面ContentPag.基本视图ContentView.控件模板ControlTemplate.模板页面TemplatedPage和模板视图TemplatedView等内容. 基本页面ContentPage 在Xamarin.Forms中,每个App的界面都是一个页面Page.页面的种类有很多种.其中,最常见.最为基础的页面为ContentPage页面,也

Xamarin XAML语言教程构建ControlTemplate控件模板

Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的.ControlTemplate被称为控件模板,它将页面的外观和内容进行了分离,从而让开发者可以更方便的创建基于主题的页面.本节将讲解控件模板相关的内容,其中包括构建控件模板以及控件模板的模板绑定等内容. 构建控件模板 控件模板可以在应用程序级别中构建,也可以在页面级别中构建.以下将对这两个构建方式

Xamarin XAML语言教程控件模板的模板绑定

Xamarin XAML语言教程控件模板的模板绑定 控件模板的模板绑定 为了可以轻松更改控件模板中控件上的属性值,可以在控件模板中实现模板绑定功能.模板绑定允许控件模板中的控件将数据绑定到公共属性上.这时需要使用TemplateBinding.它可以将控件模板中的控件的属性绑定到拥有控件模板的目标视图的父级上的可绑定属性上. 注意:(1)TemplateBinding类似于现有的Binding,不同之处在于TemplateBinding的源总是自动设置为拥有控件模板的目标视图的父级.(2)不支持