Xamarin.Forms XAML 基本概念

Download Sample 下載範例

eXtensible Application Markup Language (XAML) 是 Microsoft 所建立的 XML 型語言,是用來具現化和初始化對象的程式代碼替代方式,以及在父子式階層中組織這些物件。 XAML 已適應 .NET Framework 內的數項技術,但它在定義 Windows Presentation Foundation (WPF)、Silverlight、Windows 執行階段 和 通用 Windows 平台 (UWP) 內的使用者介面配置方面找到了最大的公用程式。

XAML 可讓開發人員使用標記而非程式代碼,在 Xamarin.Forms 應用程式中定義使用者介面。 程序絕對不需要 Xamarin.Forms XAML,但它通常比對等程式代碼更簡潔、更具有視覺上一致性,而且可能具工具性。 XAML 非常適合搭配熱門的MVVM(Model-View-ViewModel) 應用程式架構使用:XAML 會定義透過 XAML 型數據系結連結到 ViewModel 程式代碼的 View。

在 XAML 檔案中, Xamarin.Forms 開發人員可以使用所有 Xamarin.Forms 檢視、版面配置和頁面,以及自定義類別來定義使用者介面。 XAML 檔案可以編譯或內嵌在可執行檔中。 無論哪種方式,XAML 資訊會在建置階段剖析以找出具名物件,並在運行時間再次用來具現化和初始化物件,以及建立這些對象與程式設計程式代碼之間的連結。

XAML 在對等程式代碼上具有數個優點:

  • XAML 通常比對等程式代碼更簡潔且更容易閱讀。
  • XML 固有的父子式階層可讓 XAML 以更清楚的視覺方式模擬使用者介面物件的父子式階層。
  • XAML 可由程式設計人員輕鬆撰寫,但也適合可視化設計工具的工具和產生。

也有缺點,主要與標記語言內建的限制相關:

  • XAML 不能包含程序代碼。 所有事件處理程式都必須在程式碼檔案中定義。
  • XAML 不能包含重複處理的迴圈。 不過,根據集合ItemsSource中的物件,可以產生多個子系,但最值得注意的是ListView,幾個Xamarin.Forms視覺物件可以產生多個子系。
  • XAML 不能包含條件式處理(不過,數據系結可以參考可有效允許某些條件式處理的程式代碼型系結轉換器。
  • XAML 通常無法具現化未定義無參數建構函式的類別。 (然而,有時有辦法繞過這個限制。
  • XAML 通常無法呼叫方法。 (同樣地,這種限制有時可以克服。

目前還沒有任何可視化設計工具可用於在 Xamarin.Forms 應用程式中產生 XAML。 所有 XAML 都必須手動撰寫,但您可以使用 Visual Studio 2019 或 Visual Studio for Mac 中的 XAML 熱重新載入,在編輯時檢視螢幕設計。 即使是在 XAML 中擁有大量經驗的開發人員,也知道實驗是有回報的。

XAML 基本上是 XML,但 XAML 具有一些獨特的語法功能。 最重要的是:

  • 屬性元素
  • 附加屬性
  • 標記延伸

這些功能不是 XML 延伸模組。 XAML 是完全合法的 XML。 但這些 XAML 語法功能會以獨特的方式使用 XML。 以下文章會詳細討論這些主題,最後會介紹如何使用 XAML 來實作 MVVM。

需求

本文假設熟悉 Xamarin.Forms的工作。 本文也假設您熟悉 XML,包括瞭解 XML 命名空間宣告的使用,以及 terms 元素標記屬性

當您熟悉 Xamarin.Forms 和 XML 時,請開始閱讀 第 1 部分。開始使用 XAML

Channel 9YouTube 上尋找更多 Xamarin 影片。