ControlTemplate.TargetType プロパティ

定義

ControlTemplate が適用される型を取得または設定します。

public:
 property TypeName TargetType { TypeName get(); void set(TypeName value); };
TypeName TargetType();

void TargetType(TypeName value);
public System.Type TargetType { get; set; }
var typeName = controlTemplate.targetType;
controlTemplate.targetType = typeName;
Public Property TargetType As Type
<ControlTemplate TargetType="typeName"/>

プロパティ値

ControlTemplate が適用される型。 通常、この値はコードではなく XAML で設定されます。 「解説」を参照してください。

注釈

TargetType 値を指定する一般的な方法は、 ControlTemplate の XAML 属性を使用することです。 XAML で設定する場合、TargetType の意味と指定する値は、XAML での型の表現方法の一部を考慮します。 具体的には、特定の型を XAML 要素として参照するために必要なプレフィックスも、TargetType 値文字列の値として含める必要があります。 たとえば、テンプレートが、特定のマークアップ スコープで既にマップされているプレフィックス "local" の前に配置する必要があるカスタム型を対象とする場合、TargetType 値には同じプレフィックスを含める必要があります。 この動作は、Windows ランタイム XAML パーサーの組み込みの変換動作によって有効になります。

ほとんどの場合、ControlTemplate の TargetType を設定します。この場合、その ControlTemplateTemplate プロパティの Setter 内にあります。 これは、コントロールに対して定義する暗黙的な スタイル 内にあります。 含まれる Style の ControlTemplate.TargetType 値と Style.TargetType 値は、同じ暗黙的な名前付きコントロールを参照する、常に同じ型参照である必要があります。 そうしないと、コントロール テンプレートが機能しない可能性があります。

コントロール テンプレートを記述する方法の詳細については、「 XAML コントロール テンプレート」を参照してください。

Note

以前に xaml for Windows Presentation Foundation (WPF) をプログラミングしたことがある場合は、x:Type マークアップ拡張を使用して、System.Type を受け取る任意の XAML 値を入力している可能性があります。 Windows ランタイム XAML パーサーは x:Type をサポートしていません。 代わりに、マークアップ拡張を使用せずに名前で型を参照する必要があります。必要な XAML からバッキング型への変換は、前の段落で説明した組み込みの変換動作によって既に処理されています。

コードでの TargetType の使用

コードでの TargetType の設定は一般的ではありません。 XAML スタイル/テンプレート システムは、XAML をリソースとして読み込み、コントロール テンプレートのすべての側面を事前に準備することで使用することを目的としています。 ランタイムまでコントロールとテンプレートに関する情報を知らないシナリオはほとんどありません。ここで、コードで作成または参照される ControlTemplate に TargetType を設定する必要があります。

コードで TargetType を取得することも一般的ではありませんが、XAML から読み込んだ ControlTemplate がランタイム ツリーから取得した特定のコントロール ターゲットと互換性があることを再確認するためにこれを行う場合があります。

Tip

Microsoft .NET言語 (C#) を使用してプログラミングする場合、TypeName 型は System.Type としてプロジェクトされます。 C# を使用してプログラミングする場合、通常は typeof 演算子を使用して、型名に基づく型の System.Type への参照を文字列として取得します。

C++/WinRT を使用している場合は、winrt::xaml_typename<T>() ヘルパー関数を使用してTypeName オブジェクトを作成できます。 詳細とコード例については、 winrt::xaml_typename 関数テンプレート を参照してください。

適用対象

こちらもご覧ください