ControlTemplate クラス

定義

コントロールのコントロール テンプレートとして使用される要素ツリーを定義します。

public ref class ControlTemplate sealed : FrameworkTemplate
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ControlTemplate final : FrameworkTemplate
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class ControlTemplate final : FrameworkTemplate
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ControlTemplate : FrameworkTemplate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class ControlTemplate : FrameworkTemplate
Public NotInheritable Class ControlTemplate
Inherits FrameworkTemplate
<ControlTemplate ...>
    templateRootElement
</ControlTemplate>
継承
Object Platform::Object IInspectable DependencyObject FrameworkTemplate ControlTemplate
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

次の例では、Button の単純な ControlTemplate を作成 します。 コントロール テンプレートには 1 つの Grid が含まれており、この動作を指定します。

  • ユーザーが ボタンの上にマウスを置くと、 グリッド は緑から赤に 1/2 秒で変わります。
  • ユーザーがボタンからマウスを離すと、 グリッド はすぐに緑色に戻ります。
<ControlTemplate TargetType="Button">
  <Grid >
    <VisualStateManager.VisualStateGroups>
      <VisualStateGroup x:Name="CommonStates">

        <VisualStateGroup.Transitions>

          <!--Take one half second to transition to the PointerOver state.-->
          <VisualTransition To="PointerOver" 
                              GeneratedDuration="0:0:0.5"/>
        </VisualStateGroup.Transitions>
        
        <VisualState x:Name="Normal" />

        <!--Change the SolidColorBrush, ButtonBrush, to red when the
            Pointer is over the button.-->
        <VisualState x:Name="PointerOver">
          <Storyboard>
            <ColorAnimation Storyboard.TargetName="ButtonBrush" 
                            Storyboard.TargetProperty="Color" To="Red" />
          </Storyboard>
        </VisualState>
      </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Grid.Background>
      <SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
    </Grid.Background>
  </Grid>
</ControlTemplate>

generic.xaml ファイル内の各 XAML コントロールの完全なテンプレートを確認できます。 このファイルは、(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic フォルダーにあります。

注釈

詳細と例については、「 XAML コントロール テンプレート」を参照してください。

ControlTemplate は Control.Template プロパティの値として使用されます。このプロパティは、テンプレートを適用してコントロールのビジュアルを定義します。 Control.Template を Setter で設定するスタイルと同じ暗黙的なキー TargetType を使用して、ほとんどの場合、ControlTemplate を XAML リソースとして定義します。 コントロール インスタンスで Control.Template の値を直接割り当てることはほとんどありません。

ControlTemplate を定義するときに使用するプロパティは、 TargetType と暗黙的な XAML コンテンツの 2 つだけです。 ControlTemplate は、 その FrameworkTemplate 親から暗黙的な XAML コンテンツ動作を継承します。 基本的に、XAML で定義されている ControlTemplate 内に含まれる要素は、テンプレートを定義する XAML 要素のそれ以上の構造にルート要素を割り当てます。 これは、後でコードで調べることができない "Template" プロパティを設定しており、そのテンプレートの適用に基づいて XAML パーサーがコントロールのコンテンツを割り当てる方法についてのみ意味を持ちます。

そのコンテンツを ControlTemplate から設定するには、Control.Template プロパティが設定されるように、コントロール要素が True の Control サブクラスである必要があります。 テンプレートがコンテンツを適用する場合は他にもありますが、これには通常、他の FrameworkTemplate 派生テンプレート クラス (DataTemplate または ItemsPanelTemplate) のいずれかが含まれます。

コントロール テンプレートは、アプリの UI に表示されるコントロールのインスタンスを構成するビジュアルとパーツを提供します。 実行時に、テンプレートは既に適用されているため、テンプレートから作成されたすべてのパーツは、実際にはコントロールの一部となり、コントロール コンテンツ内から XAML 名前スコープを調べたり 、VisualTreeHelper クラスを使用したりするなどの手法でアクセスできます。 入力イベントなどのイベントは、適用されたコントロール テンプレートから取得されたコントロールの部分を公開することがあります。

テンプレートが特定のコントロール インスタンスに適用される前または後に、テンプレート定義コンテンツにアクセスする方法があります。 「OnApplyTemplate 」または 「GetTemplateChild」を参照してください

ControlTemplate がコントロール インスタンスに適用される実際の時点は、 OnApplyTemplate で保護された仮想メソッドを呼び出すので検出できます。 コントロールがシールされていない限り、コントロールをサブクラス化して 、OnApplyTemplate をオーバーライドすることができます。 このオーバーライドは、テンプレートが適用される前には不可能なアクションを実行するために記述できます。 たとえば、イベント ハンドラーをワイヤリングしてパーツを制御したり、コントロール プロパティを設定してテンプレートから作成されたが 、マークアップ拡張値 {TemplateBinding} で始まらなかったオブジェクト パーツを参照したりできます。

コンストラクター

ControlTemplate()

ControlTemplate クラスの新しいインスタンスを初期化します。

プロパティ

Dispatcher

このオブジェクトが関連付けられている CoreDispatcher を取得します。 CoreDispatcher は、コードが UI 以外のスレッドによって開始された場合でも、UI スレッド上の DependencyObject にアクセスできる機能を表します。

(継承元 DependencyObject)
TargetType

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

メソッド

ClearValue(DependencyProperty)

依存関係プロパティのローカル値をクリアします。

(継承元 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

依存関係プロパティに対して確立された基本値を返します。これは、アニメーションがアクティブでない場合に適用されます。

(継承元 DependencyObject)
GetValue(DependencyProperty)

DependencyObject から依存関係プロパティの現在の有効な値を返します。

(継承元 DependencyObject)
ReadLocalValue(DependencyProperty)

ローカル値が設定されている場合は、依存関係プロパティのローカル値を返します。

(継承元 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

この DependencyObject インスタンスの特定の DependencyProperty に対する変更をリッスンするための通知関数を登録します。

(継承元 DependencyObject)
SetValue(DependencyProperty, Object)

DependencyObject の依存関係プロパティのローカル値を設定します。

(継承元 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

RegisterPropertyChangedCallback を呼び出して以前に登録した変更通知を取り消します。

(継承元 DependencyObject)

適用対象

こちらもご覧ください