Xamarin XAML語言教程XAML檔案結構與解析XAML

大學霸發表於2017-04-13

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以邏輯分離。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2137200/,如需轉載,請註明出處,否則將追究法律責任。

相關文章