次の方法で共有


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

コードでの TargetType の使用

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

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

ヒント

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

適用対象

こちらもご覧ください