x:Type マークアップ拡張機能x:Type Markup Extension

指定された XAML 型の基になる型である CLR Type オブジェクトを提供します。Supplies the CLR Type object that is the underlying type for a specified XAML type.

XAML 属性の使用方法XAML Attribute Usage

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

XAML オブジェクト要素の使用方法XAML Object Element Usage

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

XAML 値XAML Values

prefix 省略可能です。Optional. 既定以外の XAML 名前空間をマップするプレフィックス。A prefix that maps a non-default XAML namespace. 多くの場合、プレフィックスを指定する必要はありません。Specifying a prefix is frequently not necessary. 「解説」を参照してください。See Remarks.
typeNameValue 必須です。Required. 現在の既定の XAML 名前空間に解決可能な型名。prefix が指定されている場合は、指定したマップ済みプレフィックス。A type name resolvable to the current default XAML namespace; or the specified mapped prefix if prefix is supplied.

RemarksRemarks

x:Type マークアップ拡張機能には、のC# typeof() 演算子、または Microsoft Visual Basic の GetType 演算子と同様の機能があります。The x:Type markup extension has a similar function to the typeof() operator in C# or the GetType operator in Microsoft Visual Basic.

x:Type マークアップ拡張機能は、型 Typeを受け取るプロパティに対して、文字列変換動作を提供します。The x:Type markup extension supplies a from-string conversion behavior for properties that take the type Type. 入力は XAML 型です。The input is a XAML type. 入力 XAML 型と出力 CLR Type の関係は、出力 Type が入力 XamlTypeUnderlyingType であることです。これは、XAML スキーマコンテキストとコンテキストによって提供される XamlType サービスに基づいて必要な IXamlTypeResolver を検索した後に実行されます。The relationship between the input XAML type and the output CLR Type is that the output Type is the UnderlyingType of the input XamlType, after looking up the necessary XamlType based on XAML schema context and the IXamlTypeResolver service the context provides.

.NET Framework XAML サービスでは、このマークアップ拡張機能の処理は TypeExtension クラスによって定義されます。In .NET Framework XAML Services, the handling for this markup extension is defined by the TypeExtension class.

特定のフレームワーク実装では、値として Type を受け取る一部のプロパティは、型の名前 (Name型の文字列値) を直接受け取ることができます。In specific framework implementations, some properties that take Type as a value can accept the name of the type directly (the string value of the type Name). ただし、この動作の実装は複雑なシナリオです。However, implementing this behavior is a complex scenario. 例については、後述の「WPF の使用に関する注意事項」を参照してください。For examples, see the "WPF Usage Notes" section that follows.

属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。Attribute syntax is the most common syntax used with this markup extension. x:Type 識別子文字列の後に設定される文字列トークンは、基になる TypeName 拡張クラスの TypeExtension 値として割り当てられます。The string token provided after the x:Type identifier string is assigned as the TypeName value of the underlying TypeExtension extension class. CLR 型に基づく .NET Framework XAML サービスの既定の XAML スキーマコンテキストでは、この属性の値は目的の型の Name のいずれかになります。または、その前に、既定以外の XAML 名前空間マッピングのプレフィックスが付いた Name を含んでいます。Under the default XAML schema context for .NET Framework XAML Services, which is based on CLR types, the value of this attribute is either the Name of the desired type, or contains that Name preceded by a prefix for a non-default XAML namespace mapping.

x:Type マークアップ拡張機能は、オブジェクト要素構文で使用できます。The x:Type markup extension can be used in object element syntax. この場合、拡張機能を正しく初期化するには、TypeName プロパティの値を指定する必要があります。In this case, specifying the value of the TypeName property is required to properly initialize the extension.

x:Type マークアップ拡張機能は、verbose 属性としても使用できます。ただし、この使用は一般的ではありません。 <object property="{x:Type TypeName=typeNameValue}" .../>The x:Type markup extension can also be used as a verbose attribute; however this use is not typical: <object property="{x:Type TypeName=typeNameValue}" .../>

WPF の使用上の注意WPF Usage Notes

既定の XAML 名前空間と型のマッピングDefault XAML Namespace and Type Mapping

WPF プログラミングの既定の XAML 名前空間には、一般的な XAML シナリオに必要な XAML 型の大部分が含まれています。そのため、多くの場合、XAML 型の値を参照するときにプレフィックスを避けることができます。The default XAML namespace for WPF programming contains most of the XAML types you need for typical XAML scenarios; therefore, you can often avoid prefixes when referencing XAML type values. カスタムアセンブリの型を参照している場合、または WPF アセンブリに存在するが、既定の XAML 名前空間にマップされていない CLR 名前空間の型を参照している場合は、プレフィックスの割り当てが必要になることがあります。You might need to map a prefix if you are referencing a type from a custom assembly or for types that exist in a WPF assembly but are from a CLR namespace that was not mapped to the default XAML namespace. プレフィックス、XAML 名前空間、および CLR 名前空間のマッピングの詳細については、「 WPF xaml の Xaml 名前空間と名前空間のマッピング」を参照してください。For more information about prefixes, XAML namespaces, and mapping CLR namespaces, see XAML Namespaces and Namespace Mapping for WPF XAML.

文字列型としての Typename をサポートする型プロパティType Properties That Support Typename-as-String

WPF は、x:Type マークアップ拡張機能の使用を必要とせずに Type 型の一部のプロパティの値を指定できるようにする手法をサポートしています。WPF supports techniques that enable specifying the value of some properties of type Type without requiring an x:Type markup extension usage. 代わりに、型に名前を付けた文字列として値を指定できます。Instead, you can specify the value as a string that names the type. この例として、ControlTemplate.TargetType および Style.TargetTypeがあります。Examples of this are ControlTemplate.TargetType and Style.TargetType. この動作のサポートは、型コンバーターまたはマークアップ拡張機能では提供されません。Support for this behavior is not provided through either type converters or markup extensions. 代わりに、これは FrameworkElementFactoryで実装される遅延動作です。Instead, this is a deferral behavior implemented through FrameworkElementFactory.

Silverlight は同様の規則をサポートしています。Silverlight supports a similar convention. 実際、Silverlight は、XAML 言語サポートの {x:Type} を現在サポートしていません。また、WPF と Silverlight の XAML 移行をサポートするように設計されたいくつかの状況では {x:Type} 使用を受け入れません。In fact, Silverlight does not currently support {x:Type} in its XAML language support, and does not accept {x:Type} usages outside of a few circumstances that are intended to support WPF-Silverlight XAML migration. そのため、typename としての typename の動作は、Type が値であるすべての Silverlight ネイティブプロパティ評価に組み込まれています。Therefore, the typename-as-string behavior is built-in to all Silverlight native property evaluation where a Type is the value.

XAML 2009XAML 2009

XAML 2009 は、ジェネリック型の追加サポートを提供し、このサポートを提供するために x:TypeArguments および x:Type の機能の動作を変更します。XAML 2009 provides additional support for generic types and modifies the feature behavior of x:TypeArguments and x:Type to provide this support.

  • x:TypeArguments と、ジェネリックオブジェクトのインスタンス化に関連付けられたオブジェクト要素は、ルート以外の要素にすることができます。x:TypeArguments and the associated object element for a generic object instantiation can be on elements other than the root. 詳細については、 X:TypeArguments ディレクティブの「XAML 2009」セクションを参照してください。For more information, see the "XAML 2009" section of x:TypeArguments Directive.

  • XAML 2009 では、マークアップでジェネリック型の制約を指定するための構文がサポートされています。XAML 2009 supports a syntax for specifying a generic type's constraint in markup. これは、x:TypeArgumentsx:Type、または2つの機能の組み合わせによって使用できます。This can be used by x:TypeArguments, by x:Type, or by the two features in combination.

  • XAML 2009 を読み込み用に処理するときの WPF XAML の実装では、型 Typeを使用する特定のフレームワークプロパティの暗黙的な型変換動作にもこの機能が追加されます。WPF XAML implementation when processing XAML 2009 for load also adds this capability to the implicit type conversion behavior for certain framework properties that use type Type.

WPF では、XAML 2009 の機能を使用できますが、ルース XAML (マークアップコンパイルされていない XAML) に対してのみ使用できます。In WPF, you can use XAML 2009 features 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.

関連項目See also