この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

ControlTemplate クラス

 

公開日: 2016年10月

視覚的な構造とさまざまな動作を指定する Control コントロールの複数のインスタンス間で共有できます。

名前空間:   System.Windows.Controls
アセンブリ:  PresentationFramework (PresentationFramework.dll 内)

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.FrameworkTemplate
      System.Windows.Controls.ControlTemplate

[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
[DictionaryKeyPropertyAttribute("TargetType")]
public class ControlTemplate : FrameworkTemplate

名前説明
System_CAPS_pubmethodControlTemplate()

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

System_CAPS_pubmethodControlTemplate(Type)

新しいインスタンスを初期化、 ControlTemplate 指定された対象の型とクラスです。

名前説明
System_CAPS_pubpropertyDispatcher

取得、 Dispatcher この DispatcherObject に関連付けられています。(DispatcherObject から継承されます。)

System_CAPS_pubpropertyHasContent

このテンプレートがコンテンツを最適化するかどうかを示す値を取得します。(FrameworkTemplate から継承されます。)

System_CAPS_pubpropertyIsSealed

変更できないように、このオブジェクトが不変の状態ではかどうかを示す値を取得します。(FrameworkTemplate から継承されます。)

System_CAPS_pubpropertyResources

取得または、このテンプレートのスコープ内で使用できるリソースのコレクションを設定します。(FrameworkTemplate から継承されます。)

System_CAPS_pubpropertyTargetType

対象の種類の設定を取得または ControlTemplate が対象としています。

System_CAPS_pubpropertyTemplate

取得または設定を記録またはテンプレートを定義またはライターによって適用されたときに、テンプレートの XAML ノードを再生するオブジェクトへの参照。(FrameworkTemplate から継承されます。)

System_CAPS_pubpropertyTriggers

コレクションを取得 TriggerBase プロパティの変更を適用またはに基づいてアクションを実行するオブジェクトが条件を指定します。

System_CAPS_pubpropertyVisualTree

取得またはテンプレートのルート ノードを設定します。(FrameworkTemplate から継承されます。)

名前説明
System_CAPS_pubmethodCheckAccess()

呼び出し元のスレッドがこれにアクセスをサポートしているかどうかを決定 DispatcherObjectします。(DispatcherObject から継承されます。)

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトがガベージ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)

System_CAPS_pubmethodFindName(String, FrameworkElement)

このテンプレート内で定義された、指定した名前に関連付けられている要素を検索します。(FrameworkTemplate から継承されます。)

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodLoadContent()

オブジェクトのインスタンスとして、テンプレートの内容をロードし、コンテンツのルート要素を返します。(FrameworkTemplate から継承されます。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_pubmethodRegisterName(String, Object)

現在の名前のスコープに新しい名前/オブジェクトのペアを登録します。(FrameworkTemplate から継承されます。)

System_CAPS_pubmethodSeal()

変更できないように、テンプレートをロックします。(FrameworkTemplate から継承されます。)

System_CAPS_pubmethodShouldSerializeResources(XamlDesignerSerializationManager)

シリアル化プロセスでの値をシリアル化する必要かどうかを示す値を返す、 Resources このクラスのインスタンスのプロパティです。(FrameworkTemplate から継承されます。)

System_CAPS_pubmethodShouldSerializeVisualTree()

シリアル化プロセスでの値をシリアル化する必要かどうかを示す値を返す、 VisualTree このクラスのインスタンスのプロパティです。(FrameworkTemplate から継承されます。)

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

System_CAPS_pubmethodUnregisterName(String)

XAML 名前スコープから名前/オブジェクトのマッピングを削除します。(FrameworkTemplate から継承されます。)

System_CAPS_protmethodValidateTemplatedParent(FrameworkElement)

ルールのセットに対してテンプレートの親を確認します。(FrameworkTemplate.ValidateTemplatedParent(FrameworkElement) をオーバーライドします。)

System_CAPS_pubmethodVerifyAccess()

呼び出し元のスレッドがへのアクセスを持つことを強制DispatcherObjectです。(DispatcherObject から継承されます。)

名前説明
System_CAPS_pubinterfaceSystem_CAPS_privmethodINameScope.FindName(String)

この API は 製品 インフラストラクチャをサポートします。コードから直接使用するためのものではありません。 指定された識別名を持つオブジェクトを返します。(FrameworkTemplate から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethodIQueryAmbient.IsAmbientPropertyAvailable(String)

現在のスコープ内の指定されたアンビエント プロパティが使用できるかどうかを照会します。(FrameworkTemplate から継承されます。)

ControlTemplate コントロールの視覚的な構造を指定することができます。 コントロールの作成者は、既定値を定義できます ControlTemplate アプリケーション作成者が上書きできると、 ControlTemplate をコントロールの視覚的な構造を再構築します。

コントロール テンプレートによって提供される多くの機能は、 WPF スタイルとテンプレートのモデルです。 スタイルとテンプレートのモデルから、ある多くの場合必要はありません、独自のコントロールを作成するのような非常に柔軟に提供します。 コントロールの視覚エフェクトを変更したり、置き換えたりする必要のあるアプリケーション作成者の場合は、 ControlTemplate の既存のコントロールを参照してください、 スタイルとテンプレート 例とについて詳しく説明するトピックです。

独自のコントロールを作成する場合に「カスタム コントロールを作成する」を参照してください、 コントロール作成の概要します。

A ControlTemplate がユーザーとスタイルをなどのオブジェクトの外側に表示されていない実装の細部の自己完結型装置を使用するものでは。 同じコントロール テンプレート内では、コントロール テンプレートの内容を操作する唯一の方法です。

<ControlTemplate>
  <VisualTreeRootNode>VisualTreeNodeContents
  </VisualTreeRootNode>
</ControlTemplate>

ControlTemplate

オブジェクト要素 ControlTemplate または派生クラスです。

VisualTreeRootNode

単一の XAML 要素の直下の子として、 ControlTemplate (または派生クラス)。 テンプレートには、単一のルート ノードが必要です。 有効なテンプレートとして選択した要素を生成するために VisualTreeRootNode が多くの場合、複数の子要素をサポートするモデルで、独自のコンテンツ モデルをサポートする予定です。

VisualTreeNodeContents

目的のテンプレートを完了する 1 つまたは複数の要素。 場合として選択された VisualTreeRootNode のみサポートしている 1 つの子、ことがありますのみとして宣言されている 1 つの要素 VisualTreeNodeContentsします。 可能です (ただし、一般的でない) 場合は、テキスト コンテンツを提供する選択した証明書 VisualTreeRootNode テキスト コンテンツ プロパティをサポートしています。

次に示す、 Button Style が設定された、 ControlTemplateButton

<Style TargetType="Button">
  <!--Set to true to not get any properties from the themes.-->
  <Setter Property="OverridesDefaultStyle" Value="True"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="Button">
        <Grid>
          <Ellipse Fill="{TemplateBinding Background}"/>
          <ContentPresenter HorizontalAlignment="Center"
                            VerticalAlignment="Center"/>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

これが適用時に、 Button として表示される、 Ellipse:

ボタン ControlTemplate のサンプル

設定すると、 Template のプロパティ、 Control を新しい ControlTemplate 全体のテンプレートを置き換える場合、上記の例に示すようにします。 どのような Button にフォーカスがあるまたは交換するボタンの既定の外観の一部は、押されたときのようになります。 そのため、必要に応じて、どのようなボタンが押されたときのようになります、定義というように、次の例のようにで配置することがあります。

<Style TargetType="Button">
  <Setter Property="SnapsToDevicePixels"
          Value="true" />
  <Setter Property="OverridesDefaultStyle"
          Value="true" />
  <Setter Property="FocusVisualStyle"
          Value="{StaticResource ButtonFocusVisual}" />
  <Setter Property="MinHeight"
          Value="23" />
  <Setter Property="MinWidth"
          Value="75" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="Button">
        <Border TextBlock.Foreground="{TemplateBinding Foreground}"
                x:Name="Border"
                CornerRadius="2"
                BorderThickness="1">
          <Border.BorderBrush>
            <LinearGradientBrush StartPoint="0,0"
                                 EndPoint="0,1">
              <LinearGradientBrush.GradientStops>
                <GradientStopCollection>
                  <GradientStop Color="{DynamicResource BorderLightColor}"
                                Offset="0.0" />
                  <GradientStop Color="{DynamicResource BorderDarkColor}"
                                Offset="1.0" />
                </GradientStopCollection>
              </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>

          </Border.BorderBrush>
          <Border.Background>
            <LinearGradientBrush EndPoint="0.5,1"
                                 StartPoint="0.5,0">
              <GradientStop Color="{DynamicResource ControlLightColor}"
                            Offset="0" />
              <GradientStop Color="{DynamicResource ControlMediumColor}"
                            Offset="1" />
            </LinearGradientBrush>
          </Border.Background>
          <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
              <VisualStateGroup.Transitions>
                <VisualTransition GeneratedDuration="0:0:0.5" />
                <VisualTransition GeneratedDuration="0"
                                  To="Pressed" />
              </VisualStateGroup.Transitions>
              <VisualState x:Name="Normal" />
              <VisualState x:Name="MouseOver">
                <Storyboard>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource ControlMouseOverColor}" />
                  </ColorAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
              <VisualState x:Name="Pressed">
                <Storyboard>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource ControlPressedColor}" />
                  </ColorAnimationUsingKeyFrames>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
                      (GradientBrush.GradientStops)[0].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource PressedBorderDarkColor}" />
                  </ColorAnimationUsingKeyFrames>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource PressedBorderLightColor}" />
                  </ColorAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
              <VisualState x:Name="Disabled">
                <Storyboard>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource DisabledControlDarkColor}" />
                  </ColorAnimationUsingKeyFrames>
                  <ColorAnimationUsingKeyFrames
                      Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource DisabledForegroundColor}" />
                  </ColorAnimationUsingKeyFrames>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource DisabledBorderDarkColor}" />
                  </ColorAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
          </VisualStateManager.VisualStateGroups>
          <ContentPresenter Margin="2"
                            HorizontalAlignment="Center"
                            VerticalAlignment="Center"
                            RecognizesAccessKey="True" />
        </Border>
        <ControlTemplate.Triggers>
          <Trigger Property="IsDefault"
                   Value="true">

            <Setter TargetName="Border"
                    Property="BorderBrush">
              <Setter.Value>
                <LinearGradientBrush StartPoint="0,0"
                                     EndPoint="0,1">
                  <GradientBrush.GradientStops>
                    <GradientStopCollection>
                      <GradientStop Color="{DynamicResource DefaultBorderBrushLightBrush}"
                                    Offset="0.0" />
                      <GradientStop Color="{DynamicResource DefaultBorderBrushDarkColor}"
                                    Offset="1.0" />
                    </GradientStopCollection>
                  </GradientBrush.GradientStops>
                </LinearGradientBrush>

              </Setter.Value>
            </Setter>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

この例がここで示されていないリソースを参照することに注意してください。 完全なサンプルを参照してください。 Styling with ControlTemplates Sampleします。 そのサンプルでは、多くのコントロールのコントロール テンプレートの例を提供し、初めてのコントロール テンプレートを作成することをお勧めします。

.NET Framework
3.0 以降で使用可能
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: