次の方法で共有


x:TypeArguments ディレクティブ

ジェネリックの制約型引数をジェネリック型のコンストラクターに渡します。

XAML 属性の使用法

<object x:TypeArguments="typeString" .../>

XAML 値

価値 形容
object CLR ジェネリック型によってサポートされる XAML 型のオブジェクト要素宣言。 object 既定の XAML 名前空間からではない XAML 型を参照する場合、object には、object が存在する XAML 名前空間を示すプレフィックスが必要です。
typeString 1 つ以上の XAML 型名を文字列として宣言する文字列。CLR ジェネリック型の型引数を指定します。 その他の構文に関する注意事項については、「解説」を参照してください。

備考

ほとんどの場合、typeString 文字列の情報項目として使用される XAML 型にはプレフィックスが付けられます。 CLR ジェネリック制約の一般的な型 (Int32Stringなど) は、CLR 基底クラス ライブラリから取得されます。 これらのライブラリは、一般的なフレームワーク固有の既定の XAML 名前空間にマップされないため、XAML の使用にはプレフィックス マッピングが必要です。

コンマ区切り記号を使用して、複数の XAML 型名を指定できます。

ジェネリック制約自体がジェネリック型を使用する場合、入れ子になった制約の型引数をかっこ () に含めることができます。

この x:TypeArguments の定義は、.NET XAML サービスに固有であり、CLR バッキングを使用している点に注意してください。 言語レベルの定義は、[MS-XAML] セクション 7.3.11で確認できます。

使用例

これらの例では、次の XAML 名前空間定義が宣言されているとします。

xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"

文字列><一覧表示する

<scg:List x:TypeArguments="sys:String" ...> String 型引数を使用して新しい List<T> をインスタンス化します。

Dictionary<String,String>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...>、2 つの String 型引数を使用して新しい Dictionary<TKey,TValue> をインスタンス化します。

Queue<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...>、内部制約型引数が String および StringKeyValuePair<TKey,TValue> の制約を持つ新しい Queue<T> をインスタンス化します。

XAML 2006 と WPF の一般的な XAML 使用法

XAML 2006 の使用と、WPF アプリケーションに使用される XAML の場合、XAML の一般的な x:TypeArguments とジェネリック型の使用には、次の制限があります。

  • ジェネリック型を参照するジェネリック XAML 使用法をサポートできるのは、XAML ファイルのルート要素だけです。

  • ルート要素は、少なくとも 1 つの型引数を持つジェネリック型にマップする必要があります。 たとえば、PageFunction<T>です。 ページ関数は、WPF での XAML 汎用使用サポートの主要なシナリオです。

  • ジェネリックのルート要素 XAML オブジェクト要素では、x:Classを使用して部分クラスも宣言する必要があります。 これは、WPF ビルド アクションを定義する場合でも当てはまります。

  • x:TypeArguments は、入れ子になったジェネリック制約を参照できません。

XAML 2009 または XAML 2006 (WPF 3.0 または WPF 3.5 依存関係なし)

XAML 2006 または XAML 2009 の .NET XAML サービスでは、一般的な XAML の使用に関する WPF 関連の制限が緩和されます。 ジェネリック オブジェクト要素は、バッキング型システムとオブジェクト モデルがサポートできる XAML マークアップ内の任意の位置でインスタンス化できます。

共通言語プリミティブの XAML 型を取得するために CLR 基本型をマッピングする代わりに XAML 2009 を使用する場合は、の情報項目として 共通 XAML 言語プリミティブの組み込み型 使用できます。 たとえば、次のように宣言できます (プレフィックス マッピングは表示されませんが、x は XAML 2009 の XAML 言語 XAML 名前空間です)。

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

WPF および .NET Framework 4 または .NET Core 3.0 (またはそれ以降) を対象とする場合は、XAML 2009 機能を x:TypeArguments と共に使用できますが、緩い XAML (マークアップ コンパイルされていない XAML) にのみ使用できます。 WPF 用のマークアップ コンパイル XAML と XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。 XAML をマークアップ コンパイルする必要がある場合は、「XAML 2006 と WPF 汎用 XAML 使用法」セクションで説明されている制限に従って操作する必要があります。 BAML は.NET Framework でのみサポートされています。

関連項目