有兩個XAML名稱空間聲明總是在XAML檔案的根元素中。 第一個定義了預設的命名空間,如下面的XAML代碼示例所示:
點選(此處)折疊或打開
xmlns="http://xamarin.com/schemas/2014/forms"
預設名稱空間指定在XAML檔案中定義的,沒有字首的元素引用Xamarin.Forms類,如ContentPage。
第二個名稱空間聲明使用x字首,如下面的XAML代碼示例所示:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
XAML使用字首聲明非預設名稱空間,在引用名稱空間内的類型時使用字首。 x命名空間聲明指定在XAML中使用字首x定義的元素用于XAML固有的元素和屬性(特别是2009 XAML規範)。
下表列出了Xamarin.Forms支援的x名稱空間屬性:
構造
描述
x:Arguments
指定非預設構造函數或工廠方法對象聲明的構造函數參數。
x:Class
指定在XAML中定義的類的名稱空間和類名。 類名稱必須與代碼隐藏檔案的類名相比對。 請注意,此構造隻能出現在XAML檔案的根元素中。
x:FactoryMethod
指定可用于初始化對象的工廠方法。
x:Key
為ResourceDictionary中的每個資源指定唯一的使用者定義鍵。 該鍵的值用于檢索XAML資源,通常用作StaticResource标記擴充的參數。
x:Name
指定XAML元素的運作時對象名稱。 設定x:Name與在代碼中聲明變量類似。
x:TypeArguments
指定泛型類型的構造函數的泛型類型參數。
有關x:參數,x:FactoryMethod和x:TypeArguments屬性的更多資訊,請參閱在XAML中傳遞參數。
在XAML中,名稱空間聲明從父元素繼承到子元素。 是以,在XAML檔案的根元素中定義名稱空間時,該檔案中的所有元素都将繼承該名稱空間聲明。
<a></a>
XAML中可以引用類型,方法是聲明帶有字首的XAML名稱空間,命名空間聲明指定公共語言運作時(CLR)名稱空間名稱,也可以使用程式集名稱。 這是通過在命名空間聲明中為以下關鍵字定義值來實作的:
clr-namespace: 或者 using: – 包含要作為XAML元素公開的類型的程式集中聲明的CLR名稱空間。 此關鍵字是必需的。
assembly= – 包含引用的CLR名稱空間的程式集。 該值是程式集的名稱,不帶檔案擴充名。 程式集的路徑應該在包含将引用程式集的XAML檔案的項目檔案中建立。 如果clr-namespace值與引用類型的應用程式代碼位于相同的程式集中,則可以省略此關鍵字。
請注意,分隔clr-名稱空間或從其值中使用标記的字元是冒号,而将彙編标記與其值相分離的字元是等号。 兩個令牌之間使用的字元是分号。
下面的代碼示例顯示了一個XAML名稱空間聲明:
ContentPage ... xmlns:local="clr-namespace:HelloWorld" ...>
...
/ContentPage>
或者,這可以寫成:
ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
本地字首是用來表示名稱空間内的類型對應用程式來說是本地的。 或者,如果類型位于不同的程式集中,程式集名稱也應該在名稱空間聲明中定義,如下面的XAML代碼示例所示:
然後在從導入的名稱空間聲明類型的執行個體時指定名稱空間字首,如下面的XAML代碼示例所示:
ListView ...>
ListView.Behaviors>
behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
/ListView.Behaviors>
/ListView>
本文介紹了XAML命名空間文法,并示範了如何聲明一個XAML命名空間以通路一個類型。 XAML為名稱空間聲明使用xmlns XML屬性,并且可以通過聲明帶有字首的XAML名稱空間來在XAML中引用類型。