XAML 命名空間
XAML 會 xmlns
針對命名空間宣告使用 XML 屬性。 XAML 檔案的根元素內一律有兩個 XAML 命名空間宣告。 第一個定義預設命名空間:
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
預設命名空間會指定在 XAML 檔案中定義的元素,不含前置詞,是指 .NET 多平臺應用程式 UI (.NET MAUI) 類別,例如 ContentPage、 Label和 Button。
第二個命名空間宣告會 x
使用前置詞:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
XAML 會使用前置詞來宣告非預設命名空間,並在參考命名空間內的類型時使用前置詞。 x
命名空間宣告會指定在 XAML 中定義具有 前置詞x
的元素,用於 XAML 內建的元素和屬性(特別是 2009 XAML 規格)。
下表概述 x
.NET MAUI 支援的建構:
建構 | 描述 |
---|---|
x:Arguments |
指定非預設建構函式或 Factory 方法物件宣告的建構函式自變數。 |
x:Class |
指定 XAML 中所定義類別的命名空間和類別名稱。 類別名稱必須符合程式代碼後置檔案的類別名稱。 請注意,此建構只能出現在 XAML 檔案的根元素中。 |
x:ClassModifier |
指定元件中產生類別的存取層級。 |
x:DataType |
指定 XAML 專案及其子系系所系結的物件型別。 |
x:FactoryMethod |
指定可用來初始化物件的 Factory 方法。 |
x:FieldModifier |
指定具名 XAML 元素之已產生欄位的存取層級。 |
x:Key |
為中的每個 ResourceDictionary資源指定唯一的使用者定義索引鍵。 索引鍵的值是用來擷取 XAML 資源,通常用來做為標記延伸的 StaticResource 自變數。 |
x:Name |
指定 XAML 專案的執行時間物件名稱。 設定 x:Name 類似於在程式代碼中宣告變數。 |
x:TypeArguments |
指定泛型型別的建構函式的泛型型別自變數。 |
如需屬性的詳細資訊 x:ClassModifier
,請參閱 類別修飾詞。 如需屬性的詳細資訊 x:DataType
,請參閱 編譯的系結。 如需屬性的詳細資訊 x:FieldModifier
,請參閱 字段修飾詞。 如需 和 屬性的詳細資訊x:Arguments
,請參閱傳遞自變數。x:FactoryMethod
如需屬性的詳細資訊 x:TypeArguments
,請參閱 泛型。
注意
除了上述建構之外,.NET MAUI 也包含可透過命名空間前置詞取用的 x
標記延伸。 如需詳細資訊,請參閱 取用 XAML 標記延伸。
在 XAML 中,命名空間宣告會繼承自父元素到子專案。 因此,在 XAML 檔案的根元素中定義命名空間時,該檔案中的所有專案都會繼承命名空間宣告。
宣告類型的命名空間
類型可以在 XAML 中參考,方法是宣告具有前置詞的 XAML 命名空間、指定 Common Language Runtime (CLR) 命名空間名稱的命名空間宣告,以及選擇性地宣告元件名稱。 這是藉由在命名空間宣告中定義下列關鍵詞的值來達成:
clr-namespace:
或using:
– 在元件內宣告的CLR命名空間,其中包含要公開為 XAML 元素的類型。 需要這個關鍵詞。assembly=
– 包含參考 CLR 命名空間的元件。 這個值是元件的名稱,不含擴展名。 元件的路徑應該建立為專案中的參考,其中包含將參考元件的 XAML 檔案。 如果 clr-namespace 值與參考型別的應用程式程式代碼位於相同的元件內,則可以省略此關鍵詞。
注意
將 clr-namespace
或 using
標記與其值分隔的字元是冒號,而將令牌與其值分隔的 assembly
字元則是等號。 兩個標記之間要使用的字元是分號。
下列程式代碼範例顯示 XAML 命名空間宣告:
<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
...
</ContentPage>
或者,這可以撰寫為:
<ContentPage ... xmlns:local="using:MyMauiApp">
...
</ContentPage>
前置 local
詞是用來指出命名空間內的型別是應用程式本機的慣例。 或者,如果類型位於不同的元件中,則也應該在命名空間宣告中定義元件名稱:
<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
...
</ContentPage>
然後,從匯入的命名空間宣告型別的實例時,會指定命名空間前置詞:
<controls:Expander IsExpanded="True">
...
</controls:Expander>
如需定義自定義命名空間架構的相關信息,請參閱 自定義命名空間架構。