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公共預設的部分進行說明。
- 第一行是對XML簡單的說明,其中包含了XML版本號以及編碼格式。
- 第二行程式碼至最後一行程式碼的功能是構建介面所需要的內容。其中,第二行和第三行使用兩個XML名稱空間(xmlns)宣告引用了URL。開發者不需要知道這些URL指向的具體內容。他們只是Xamarin和Microsoft擁有的URL,它們基本上充當版本識別符號。第一個XML名稱空間宣告意味著在XAML檔案中定義了沒有字首的標籤,它引用Xamarin.Forms中的類,如ContentPage。第二個名稱空間宣告定義了x的字首,它用於XAML本身固有的幾個元素和屬性,(理論上)由XAML的所有實現支援。
注意:這些元素和屬性根據嵌入在URL中的年份略有不同。Xamarin.Forms支援2009 XAML規範,但不是所有的。
- 第四行程式碼。在宣告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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 剖析XAML語言
- XAML常用控制元件2控制元件
- C# generate listview and fill data no xamlC#View
- WPF Add ResourceDictionary file and declared in app.xamlAPP
- Autocad.net利用Xaml建立Ribbon介面
- wpf xaml binding靜態類的屬性
- WPF中的XAML Behaviors(行為)詳解
- XAML一些控制元件的使用控制元件
- Visual Studio系列教程:使用XAML工具建立使用者介面(一)
- Visual Studio系列教程:使用XAML工具建立使用者介面(二)
- WPF Button Command and CommandParamet completed via C# no xaml at allC#
- dotnet 9 WPF 專案禁用 IncludePackageReferencesDuringMarkupCompilation 導致原始碼包 XAML 構建失敗Package原始碼
- 對XAML進行編輯的輔助類(XamlHelper)
- C# - 如何在 MVVM 中處理 XAML 鍵盤?C#MVVM
- XAML 屬性元素,標記擴充套件和註釋套件
- WPF中的XAML是如何轉換成視覺化樹的?視覺化
- 【WPF】CAD工程圖紙轉WPF可直接使用的xaml程式碼技巧
- dotnet WinUI 3 修復非打包應用執行提示 Microsoft.ui.xaml.dll 找不到UIROS
- Xamarin Essentials教程開啟檔案
- UWP 開發初階 Chapter 3 - 常用 XAML 基礎控制元件及其相應常用屬性介紹APT控制元件
- C語言教程——03 C語言結構C語言
- Go 語言解析 yaml 檔案的方法GoYAML
- PE檔案結構解析3
- PE檔案結構解析1
- PE檔案結構解析2
- 可用於解析 Excel 檔案的程式語言Excel
- Xamarin Essentials應用教程檔案系統FileSystem
- 深入解析Class類檔案的結構
- 物聯網學習教程—Linux 可執行檔案結構與程式結構Linux
- Xamarin Essentials教程獲取路徑檔案系統FileSystem
- Dart 語言標準流與檔案操作Dart
- Go 語言目錄結構與實踐Go
- Xamarin.FormsShell基礎教程(3)Shell專案構成ORM
- SQL語言(結構化查詢語言)SQL
- XamarinSQLite教程在Xamarin.Android專案中提取資料庫檔案SQLiteAndroid資料庫
- XamarinSQLite教程在Xamarin.Android專案中定位資料庫檔案SQLiteAndroid資料庫
- XamarinSQLite教程在Xamarin.iOS專案中定位資料庫檔案SQLiteiOS資料庫
- XamarinSQLite教程Xamarin.iOS專案中開啟資料庫檔案SQLiteiOS資料庫
- PE檔案結構解析 Part3 NT HeadersHeader