x:TypeArguments ディレクティブx:TypeArguments Directive

ジェネリックの制約型引数をジェネリック型のコンストラクターに渡します。Passes constraining type arguments of a generic to the constructor of the generic type.

XAML 属性の使用方法XAML Attribute Usage

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

XAML 値XAML Values

object CLR ジェネリック型によってサポートされる XAML 型のオブジェクト要素宣言。An object element declaration of a XAML type, which is backed by a CLR generic type. object 既定の xaml 名前空間からではない xaml 型を参照している場合、は、が存在する場合に object xaml 名前空間を示すプレフィックスを必要とし object ます。If object refers to a XAML type that is not from the default XAML namespace, object requires a prefix to indicate the XAML namespace where object exists.
typeString 1つ以上の XAML 型名を文字列として宣言する文字列。この文字列は、CLR ジェネリック型の型引数を提供します。A string that declares one or more XAML type names as strings, which supplies the type arguments for the CLR generic type. 追加の構文ノートについては、「解説」を参照してください。See Remarks for additional syntax notes.

注釈Remarks

ほとんどの場合、文字列の情報項目として使用される XAML 型に typeString はプレフィックスが付きます。In most cases, the XAML types that are used as an information item in a typeString string are prefixed. Clr ジェネリック制約の一般的な型 (やなど Int32 ) は、 String clr 基底クラスライブラリから取得されます。Typical types of CLR generic constraints (for example, Int32 and String) come from CLR base class libraries. これらのライブラリは、フレームワーク固有の一般的な既定の XAML 名前空間にマップされないため、XAML の使用にはプレフィックスマッピングが必要です。Those libraries are not mapped to typical framework-specific default XAML namespaces, and therefore, require a prefix mapping for XAML usage.

複数の XAML 型名を指定するには、コンマ区切り記号を使用します。You can specify more than one XAML type name by using a comma delimiter.

ジェネリック制約自体がジェネリック型を使用する場合は、入れ子になった制約型の引数をかっこ () で囲むことができます。If the generic constraints themselves use generic types, the nested constraint type arguments can be contained by parentheses ().

この定義 x:TypeArguments は、.NET XAML サービスと CLR バッキングの使用に固有であることに注意してください。Note that this definition of x:TypeArguments is specific to .NET XAML Services and using CLR backing. 言語レベルの定義については、 [ ] 「5.3.11」セクションを参照してください。A language-level definition can be found in [MS-XAML] Section 5.3.11.

使用例Usage Examples

これらの例では、次の XAML 名前空間定義が宣言されているものとします。For these examples, assume that the following XAML namespace definitions are declared:

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

リスト<String>List<String>

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

Dictionary<String,String>Dictionary<String,String>

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

キュー<KeyValuePair<String,String>>Queue<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...>Queue<T> KeyValuePair<TKey,TValue> 内部制約型引数とを使用して、の制約を持つ新しいをインスタンス化し String String ます。<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> instantiates a new Queue<T> that has a constraint of KeyValuePair<TKey,TValue> with the inner constraint type arguments String and String.

XAML 2006 と WPF 汎用 XAML の使用XAML 2006 and WPF Generic XAML Usages

XAML 2006 の使用、および WPF アプリケーションで使用される XAML では、 x:TypeArguments 一般的に xaml からのジェネリック型の使用に関して次の制限があります。For XAML 2006 usage, and XAML that is used for WPF applications, the following restrictions exist for x:TypeArguments and generic type usages from XAML in general:

  • ジェネリック型を参照する汎用 XAML 使用をサポートできるのは、XAML ファイルのルート要素だけです。Only the root element of a XAML file can support a generic XAML usage that references a generic type.

  • ルート要素は、少なくとも1つの型引数を持つジェネリック型にマップする必要があります。The root element must map to a generic type with at least one type argument. たとえば PageFunction<T> です。An example is PageFunction<T>. ページ関数は、WPF の XAML 汎用使用サポートの主要なシナリオです。The page functions are the primary scenario for XAML generic usage support in WPF.

  • ジェネリックのルート要素 XAML オブジェクト要素も、を使用して部分クラスを宣言する必要があり x:Class ます。The root element XAML object element for the generic must also declare a partial class using x:Class. これは、WPF ビルドアクションを定義する場合にも当てはまります。This is true even if defining a WPF build action.

  • x:TypeArguments 入れ子になったジェネリック制約を参照することはできません。x:TypeArguments cannot reference nested generic constraints.

WPF 3.0 または WPF 3.5 依存関係のない XAML 2009 または XAML 2006XAML 2009 or XAML 2006 with No WPF 3.0 or WPF 3.5 Dependency

XAML 2006 または XAML 2009 の .NET XAML サービスでは、ジェネリック XAML の使用に関する WPF 関連の制限が緩和されます。In .NET XAML Services for either XAML 2006 or XAML 2009, the WPF-related restrictions on generic XAML usage are relaxed. バッキング型システムおよびオブジェクトモデルがサポートできる XAML マークアップ内の任意の位置で、ジェネリックオブジェクト要素をインスタンス化できます。You can instantiate a generic object element at any position in XAML markup that the backing type system and object model can support.

CLR 基本型をマップして共通言語プリミティブの XAML 型を取得するのではなく、XAML 2009 を使用する場合は、 共通の Xaml 言語プリミティブの組み込み型 を内の情報項目として使用でき typeString ます。If you use XAML 2009 instead of mapping the CLR base types to obtain XAML types for common language primitives, you can use Built-in Types for Common XAML Language Primitives as information items in a typeString. たとえば、次のように宣言できます (プレフィックスの割り当ては表示されませんが、x は xaml 言語2009の xaml 言語の xaml 名前空間です)。For example, you could declare the following (prefix mappings not shown, but x is the XAML language XAML namespace for XAML 2009):

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

WPF で .NET Framework 4 または .NET Core 3.0 (またはそれ以降) を対象とする場合は、XAML 2009 の機能をと共に使用でき x:TypeArguments ますが、疎な xaml (マークアップコンパイルされていない xaml) に対してのみ使用できます。In WPF and when targeting .NET Framework 4 or .NET Core 3.0 (or later), you can use XAML 2009 features together with x:TypeArguments but only for loose XAML (XAML that is not markup-compiled). WPF 向けにマークアップ コンパイルされた XAML、および XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。Markup-compiled XAML for WPF and the BAML form of XAML do not currently support the XAML 2009 keywords and features. XAML をマークアップする必要がある場合は、「 xaml 2006 と WPF 汎用 xaml の使用 」セクションに記載されている制限事項に従って操作する必要があります。If you need to markup compile the XAML, you must operate under the restrictions noted in the XAML 2006 and WPF Generic XAML Usages section. BAML は、.NET Framework でのみサポートされています。BAML is only supported in .NET Framework.

関連項目See also