次の方法で共有


x:Type マークアップ拡張

指定した XAML 型の基になる型である CLR Type オブジェクトを提供します。

XAML 属性の使用法

<object property="{x:Type prefix:typeNameValue}" .../>

XAML オブジェクト要素の使用法

<x:Type TypeName="prefix:typeNameValue"/>

XAML 値

価値 形容
prefix 随意。 既定以外の XAML 名前空間をマップするプレフィックス。 プレフィックスの指定は、多くの場合必要ありません。 「解説」を参照してください。
typeNameValue 必須。 現在の既定の XAML 名前空間に解決できる型名。または、prefix が指定されている場合は、指定されたマップされたプレフィックス。

備考

x:Type マークアップ拡張機能には、C# の typeof() 演算子や Microsoft Visual Basic の GetType 演算子と同様の関数があります。

x:Type マークアップ拡張機能は、Type型を受け取るプロパティの文字列からの変換動作を提供します。 入力は XAML 型です。 入力 XAML 型と出力 CLR Type の関係は、XAML スキーマ コンテキストとコンテキストが提供する IXamlTypeResolver サービスに基づいて必要な XamlType を検索した後、出力 Type が入力 XamlTypeUnderlyingType であるということです。

.NET XAML Services では、このマークアップ拡張機能の処理は、TypeExtension クラスによって定義されます。

特定のフレームワーク実装では、値として Type を受け取る一部のプロパティは、型の名前 (型の文字列値 Name) を直接受け取ることができます。 ただし、この動作の実装は複雑なシナリオです。 例については、次の「WPF 使用法に関するメモ」セクションを参照してください。

属性構文は、このマークアップ拡張で使用される最も一般的な構文です。 x:Type 識別子文字列の後に指定された文字列トークンは、基になる TypeExtension 拡張クラスの TypeName 値として割り当てられます。 CLR 型に基づく .NET XAML サービスの既定の XAML スキーマ コンテキストでは、この属性の値は目的の型の Name であるか、既定以外の XAML 名前空間マッピングのプレフィックスが前 Name 含まれています。

x:Type マークアップ拡張は、オブジェクト要素の構文で使用できます。 この場合、拡張機能を適切に初期化するには、TypeName プロパティの値を指定する必要があります。

x:Type マークアップ拡張は、詳細属性として使用することもできます。ただし、この使用は一般的ではありません: <object property="{x:Type TypeName=typeNameValue}" .../>

WPF の使用に関する注意事項

既定の XAML 名前空間と型マッピング

WPF プログラミングの既定の XAML 名前空間には、一般的な XAML シナリオに必要なほとんどの XAML 型が含まれています。そのため、多くの場合、XAML 型の値を参照するときにプレフィックスを回避できます。 カスタム アセンブリから型を参照している場合、または WPF アセンブリに存在するが、既定の XAML 名前空間にマップされていない CLR 名前空間からの型の場合は、プレフィックスのマップが必要になる場合があります。 プレフィックス、XAML 名前空間、および CLR 名前空間のマッピングの詳細については、「WPF XAMLの XAML 名前空間と名前空間マッピング 」を参照してください。

Typename-as-String をサポートする型プロパティ

WPF では、x:Type マークアップ拡張機能の使用を必要とせずに、Type 型の一部のプロパティの値を指定できるようにする手法がサポートされています。 代わりに、型の名前を指定する文字列として値を指定できます。 この例は、ControlTemplate.TargetTypeStyle.TargetTypeです。 この動作のサポートは、型コンバーターまたはマークアップ拡張では提供されません。 代わりに、これは FrameworkElementFactoryによって実装される遅延動作です。

Silverlight でも同様の規則がサポートされています。 実際、Silverlight は現在、XAML 言語のサポートで {x:Type} をサポートしていません。また、WPF-Silverlight XAML 移行をサポートすることを目的としたいくつかの状況以外では、{x:Type} の使用を受け入れていません。 したがって、文字列としての型名の動作は、Type が値である Silverlight のすべてのネイティブ プロパティ評価に組み込まれています。

XAML 2009

XAML 2009 はジェネリック型の追加サポートを提供し、このサポートを提供するために x:TypeArgumentsx:Type の機能の動作を変更します。

  • 一般的なオブジェクトインスタンス化の x:TypeArguments および関連付けられたオブジェクト要素は、ルート以外の要素に対して指定できます。 詳細については、x:TypeArguments ディレクティブの「XAML 2009」セクションを参照してください。

  • XAML 2009 では、マークアップでジェネリック型の制約を指定するための構文がサポートされています。 これは、x:TypeArgumentsx:Type、または 2 つの機能を組み合わせて使用できます。

  • 読み込みのために XAML 2009 を処理する場合の WPF XAML 実装では、型 Typeを使用する特定のフレームワーク プロパティの暗黙的な型変換動作にもこの機能が追加されます。

WPF では、XAML 2009 機能を使用できますが、緩い XAML (マークアップ コンパイルされていない XAML) に対してのみ使用できます。 WPF 用のマークアップ コンパイル XAML と XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。

関連項目