共用方式為


XAML 命名空間

XAML 會 xmlns 針對命名空間宣告使用 XML 屬性。 XAML 檔案的根元素內一律有兩個 XAML 命名空間宣告。 第一個定義預設命名空間:

xmlns="http://schemas.microsoft.com/dotnet/2021/maui"

預設命名空間會指定在 XAML 檔案中定義的元素,不含前置詞,是指 .NET 多平臺應用程式 UI (.NET MAUI) 類別,例如 ContentPageLabelButton

第二個命名空間宣告會 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-namespaceusing 標記與其值分隔的字元是冒號,而將令牌與其值分隔的 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>

如需定義自定義命名空間架構的相關信息,請參閱 自定義命名空間架構