天天看點

【Xamarin.Forms】XAML命名空間——将XAML名稱空間聲明為引用類型 概觀 為類型聲明命名空間 概要

有兩個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" ...&gt;

  ...

/ContentPage&gt;

或者,這可以寫成:

ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...&gt;

本地字首是用來表示名稱空間内的類型對應用程式來說是本地的。 或者,如果類型位于不同的程式集中,程式集名稱也應該在名稱空間聲明中定義,如下面的XAML代碼示例所示:

然後在從導入的名稱空間聲明類型的執行個體時指定名稱空間字首,如下面的XAML代碼示例所示:

ListView ...&gt;

  ListView.Behaviors&gt;

    behaviors:EventToCommandBehavior EventName="ItemSelected" ... /&gt;

  /ListView.Behaviors&gt;

/ListView&gt;

本文介紹了XAML命名空間文法,并示範了如何聲明一個XAML命名空間以通路一個類型。 XAML為名稱空間聲明使用xmlns XML屬性,并且可以通過聲明帶有字首的XAML名稱空間來在XAML中引用類型。

繼續閱讀