XAML 名前空間
XAML では、名前空間宣言に xmlns
XML 属性を使用します。 XAML ファイルのルート要素内には、常に 2 つの XAML 名前空間宣言があります。 1 つ目は、既定の名前空間を定義します。
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
既定の名前空間は、プレフィックスのない XAML ファイル内で定義された要素が、.NET マルチプラットフォーム アプリ UI (.NET MAUI) クラス (ContentPage、Label、Button など) を参照するように指定します。
2 番目の名前空間宣言は、x
プレフィックスを使用します。
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
XAML は、プレフィックスを使用して既定以外の名前空間を宣言し、名前空間内の型を参照するときにプレフィックスを使用します。 x
名前空間宣言は、x
のプレフィックスが付いた XAML 内で定義された要素が、XAML に組み込まれている要素と属性 (具体的には 2009 XAML 仕様) に使用されるように指定します。
次の表は、.NET MAUI でサポートされる x
コンストラクトの概要を示しています。
構造体 | 説明 |
---|---|
x:Arguments |
既定以外のコンストラクターまたはファクトリ メソッド オブジェクト宣言のコンストラクター引数を指定します。 |
x:Class |
XAML で定義されているクラスの名前空間とクラス名を指定します。 クラス名は、分離コード ファイルのクラス名と一致する必要があります。 このコンストラクトは、XAML ファイルのルート要素にのみ表示できることに注意してください。 |
x:ClassModifier |
アセンブリで生成されたクラスのアクセス レベルを指定します。 |
x:DataType |
XAML 要素とその子がバインドするオブジェクトの型を指定します。 |
x:FactoryMethod |
オブジェクトの初期化に使用できるファクトリ メソッドを指定します。 |
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 名前空間を宣言し、名前空間宣言で共通言語ランタイム (CLR) 名前空間名を指定し、必要に応じてアセンブリ名を指定します。 これは、名前空間宣言内で次のキーワードの値を定義することによって実現されます。
clr-namespace:
またはusing:
: XAML 要素として公開する型が含まれるアセンブリ内で宣言されている CLR 名前空間。 このキーワードは必須です。assembly=
: 参照されている CLR 名前空間を含むアセンブリ。 この値は、ファイル拡張子のないアセンブリの名前です。 アセンブリへのパスは、アセンブリを参照する XAML ファイルを含むプロジェクト内の参照として確立する必要があります。 clr-namespace 値が型を参照しているアプリ コードと同じアセンブリ内にある場合、このキーワードは省略できます。
注意
clr-namespace
または using
のトークンとその値を区切る文字はコロン (:) です。一方、assembly
トークンとその値を区切る文字は等号 (=) です。 これら 2 つのトークンの間に使用する文字はセミコロン (;) です。
次のコード例では、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>
カスタム名前空間スキーマの定義の詳細については、「カスタム名前空間スキーマ」をご覧ください。
.NET MAUI に関するフィードバック
.NET MAUI はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。