Xamarin.Forms の XAML 名前空間
XAML は、名前空間宣言に xmlns XML 属性を使います。 この記事では、XAML 名前空間の構文について説明し、XAML 名前空間を宣言して型にアクセスする方法を示します。
概要
XAML ファイルのルート要素内には、常に 2 つの XAML 名前空間宣言があります。 1 番目は、次の XAML コード例に示すように、既定の名前空間を定義します。
xmlns="http://xamarin.com/schemas/2014/forms"
既定の名前空間は、XAML ファイル内でプレフィックスなしで定義された要素が ContentPage
などの Xamarin.Forms クラスを参照することを指定します。
2 番目の名前空間宣言では、次の XAML コード例に示すように、x
プレフィックスを使います。
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:DataType |
XAML 要素とその子がバインドするオブジェクトの型を指定します。 |
x:FactoryMethod |
オブジェクトの初期化に使用できるファクトリ メソッドを指定します。 |
x:FieldModifier |
名前付き XAML 要素の生成されたフィールドのアクセス レベルを指定します。 |
x:Key |
ResourceDictionary 内の各リソースにユーザー定義の一意のキーを設定します。 キーの値は XAML リソースを取得するために使用され、通常は StaticResource マークアップ拡張機能の引数として使用されます。 |
x:Name |
XAML 要素のランタイム オブジェクト名を指定します。 x:Name の設定は、コードで変数を宣言するのと似ています。 |
x:TypeArguments |
ジェネリック型のコンストラクターにジェネリック型の引数を指定します。 |
x:DataType
属性の詳細については、コンパイルされたバインディングに関するページを参照してください。 x:FieldModifier
属性の詳細については、フィールド修飾子に関するページを参照してください。 x:Arguments
属性と x:FactoryMethod
属性の詳細については、「XAML での引数の受け渡し」を参照してください。 x:TypeArguments
属性の詳細については、Xamarin.Forms を使った XAML のジェネリックに関するページを参照してください。
Note
上記の名前空間属性に加えて、Xamarin.Forms には、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:HelloWorld" ...>
...
</ContentPage>
または、次のように記述することもできます。
<ContentPage ... xmlns:local="using:HelloWorld" ...>
...
</ContentPage>
local
プレフィックスは、名前空間内の型がアプリケーションに対してローカルであることを示すために使われる規約です。 また、型が別のアセンブリにある場合は、次の XAML コード例に示すように、名前空間宣言でもアセンブリ名を定義する必要があります。
<ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
...
</ContentPage>
次の XAML コード例に示すように、インポートされた名前空間から型のインスタンスを宣言するときに、名前空間プレフィックスが指定されます。
<ListView ...>
<ListView.Behaviors>
<behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
</ListView.Behaviors>
</ListView>
カスタム名前空間スキーマの定義については、XAML カスタム名前空間スキーマに関するページを参照してください。
まとめ
この記事では、XAML 名前空間の構文について説明し、XAML 名前空間を宣言して型にアクセスする方法を示しました。 XAML は、名前空間宣言に xmlns
XML 属性を使います。プレフィックスを使って XAML 名前空間を宣言することで、XAML で型を参照できます。