展開 最小化

Control.Template Property

コントロール テンプレートを取得または設定します。コントロール テンプレートは UI でのコントロールの外観を定義し、XAML マークアップで定義されます。

構文


Public Property Template As ControlTemplate
   Get
   Set


<control Template="{StaticResource templateResourceKey}"/>


<Style TargetType="controlTypeName">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="controlTypeName">
        templateRoot
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

XAML Values

templateResourceKey

要求されているテンプレートを識別するキー。このキーは、ResourceDictionary 内の既存のリソースを参照します。

メモ  インライン テンプレートを定義するプロパティ要素構文は、技術的には使用可能ですが、大半のテンプレートのシナリオでは使用しないことをお勧めします。

controlTypeName

コントロールの Type の文字列形式。

templateRoot

テンプレートのルート要素を定義する単一のオブジェクト要素 (派生した FrameworkElement である必要があります)。テンプレート ルートとして何が使用できるかの詳細については、「クイック スタート: コントロール テンプレート」を参照してください。

プロパティ値

型: ControlTemplate

Control の外観を定義するテンプレート。ControlTemplate には、その内容としてルート要素が 1 つだけ必要です。

解説

上に示した 2 番目の XAML 構文は、Style の一部としての Setter 構文です。これは ControlTemplate 値が、ほとんどすべてのクラス内で定義される方法です。

TargetTypeTemplate 値として使用するすべての ControlTemplate 要素の必須属性です。Style-Setter の構文を使用する場合は、値は Template に関する Setter を含む Style に対応する TargetType プロパティと一致する必要があります。

ControlTemplateControl の外観を指定します。ControlControlTemplate を持たない場合、Control はアプリに表示されません。コントロールの作成者は既定のコントロール テンプレートを定義し、アプリの 作成者は ControlTemplate XAML を再テンプレート化して、コントロールのビジュアル ツリーを再定義できます。

Control テンプレートは、通常、コントロール固有の暗黙のスタイルの一部として、Extensible Application Markup Language (XAML) に設定されます。この場合、SetterProperty 値は、文字列 "Template" として設定され、Setter.Value 値は、ControlTemplate オブジェクト要素を含むプロパティ要素として設定されます。たとえば、ScrollViewerTemplate 値を定義する Style を以下に示します。これは StyleResourceDictionary 内にあるものの x:Key 属性を必要としない、暗黙的なスタイルの例です。



<ResourceDictionary>
  <Style TargetType="ScrollViewer">
  ...
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="ScrollViewer">
          <!--visual root of template for a ScrollViewer-->
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
  ...
</ResourceDictionary>

スタイルとテンプレート

Style 内で Setter を使用して、任意の依存関係プロパティに値を適用することができます。ただし、一般的な Style で XAML マークアップの大半を構成するのは、Control から派生したクラスの Template プロパティの Setter です。コントロール テンプレートの定義に Style が使用されている場合、Control.Template Set アクセス操作子に使用される Style 要素の TargetTypeControlTemplate 要素の TargetType は常に同じ値を使用する必要があります。Template の setter は、テンプレートの適用先であるコントロールに対応する基本テンプレート化された UI 定義を定義します。また、コントロールの表示状態、および既定のテーマの切り替えなどのその他の状態ベースの UI の定義が含まれています。ListBox などの複雑なコントロールでは、既定のテンプレートの StyleControlTemplate に数百行に及ぶ XAML が含まれていることがあります。コントロール テンプレート シナリオの Template のロールの詳細については、「クイック スタート: コントロール テンプレート」を参照してください。

暗黙のスタイル

同じ TargetType であるすべてのオブジェクトによって暗黙的に使用される Style としてスタイルを定義することができ、このようなオブジェクトの各インスタンスが StyleFrameworkElement.Style の値として明確に参照する必要はありません。ResourceDictionary<Style> リソースが、x:Key attribute 値なしで宣言されている場合は、x:Key 値が、TargetType プロパティの値を使用します。スタイルが暗黙で設定された場合は、TargetType と正確に一致する種類にのみ適用され、TargetType 値から派生した要素には適用されません。たとえば、アプリケーションのすべての ToggleButton コントロールのスタイルを暗黙で作成し、およびアプリケーションに ToggleButton および CheckBox コントロール (CheckBoxToggleButton から派生します) がある場合は、"ToggleButton" の暗黙のスタイルは ToggleButton コントロールのみに適用されます。

この例は、"テンプレート"の Setter.Property 値を持つ StyleSetter で定義される、完全なコントロール テンプレートを示します。これは RadioButton コントロール用の名前付きスタイルです。これには、通常は機能コントロール テンプレートの一部であるテンプレート要素が含まれます。 たとえば、テンプレートのルート要素にアタッチされた VisualStateManager.VisualStateGroups 添付プロパティ要素や、コントロールの主要な部分のそれぞれに割り当てられた x:Name attribute 値などです。



    <Style x:Key="TextRadioButtonStyle" TargetType="RadioButton"> 
        <Setter Property="MinWidth" Value="0"/> 
        <Setter Property="MinHeight" Value="0"/> 
        <Setter Property="Template"> 
            <Setter.Value> 
                <ControlTemplate TargetType="RadioButton"> 
                    <Grid Background="Transparent"> 
                        <TextBlock 
                            x:Name="Text" 
                            Text="{TemplateBinding Content}" 
                            Margin="3,-7,3,10" 
                            TextWrapping="NoWrap" 
                            Style="{StaticResource SubheaderTextStyle}"/> 
                        <Rectangle 
                            x:Name="FocusVisualWhite" 
                            IsHitTestVisible="False" 
                            Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}" 
                            StrokeEndLineCap="Square" 
                            StrokeDashArray="1,1" 
                            Opacity="0" 
                            StrokeDashOffset="1.5"/> 
                        <Rectangle 
                            x:Name="FocusVisualBlack" 
                            IsHitTestVisible="False" 
                            Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}" 
                            StrokeEndLineCap="Square" 
                            StrokeDashArray="1,1" 
                            Opacity="0" 
                            StrokeDashOffset="0.5"/> 
 
                        <VisualStateManager.VisualStateGroups> 
                            <VisualStateGroup x:Name="CommonStates"> 
                                <VisualState x:Name="Normal"/> 
                                <VisualState x:Name="PointerOver"> 
                                    <Storyboard> 
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> 
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPointerOverForegroundThemeBrush}"/> 
                                        </ObjectAnimationUsingKeyFrames> 
                                    </Storyboard> 
                                </VisualState> 
                                <VisualState x:Name="Pressed"> 

                                    <Storyboard> 
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> 
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPressedForegroundThemeBrush}"/> 
                                        </ObjectAnimationUsingKeyFrames> 
                                    </Storyboard> 
                                </VisualState> 
                                <VisualState x:Name="Disabled"> 
                                    <Storyboard> 
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> 
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonDisabledForegroundThemeBrush}"/> 
                                        </ObjectAnimationUsingKeyFrames> 
                                    </Storyboard> 
                                </VisualState> 
                            </VisualStateGroup> 
                            <VisualStateGroup x:Name="FocusStates"> 
                                <VisualState x:Name="Focused"> 
                                    <Storyboard> 
                                        <DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualWhite" Storyboard.TargetProperty="Opacity"/> 
                                        <DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Opacity"/> 
                                    </Storyboard> 
                                </VisualState> 
                                <VisualState x:Name="Unfocused"/> 
                            </VisualStateGroup> 
                            <VisualStateGroup x:Name="CheckStates"> 
                                <VisualState x:Name="Checked"/> 
                                <VisualState x:Name="Unchecked"> 
                                    <Storyboard> 
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> 
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationSecondaryForegroundThemeBrush}"/> 
                                        </ObjectAnimationUsingKeyFrames> 
                                    </Storyboard> 
                                </VisualState> 
                                <VisualState x:Name="Indeterminate"/> 
                            </VisualStateGroup> 
                        </VisualStateManager.VisualStateGroups> 
                    </Grid> 
                </ControlTemplate> 
            </Setter.Value> 
        </Setter> 
    </Style> 


要件

最小限サポートされるクライアント

Windows 8

最小限サポートされるサーバー

Windows Server 2012

名前空間

Windows.UI.Xaml.Controls
Windows::UI::Xaml::Controls [C++]

メタデータ

Windows.winmd

参照

クイック スタート: コントロール テンプレート
Control
OnApplyTemplate
GetTemplateChild
ControlTemplate
Style

 

 

表示:
© 2015 Microsoft