ControlTemplate Sınıf

Tanım

Denetimin birden çok örneği arasında paylaşılabilen görsel Control yapısını ve davranışsal yönlerini belirtir.

public ref class ControlTemplate : System::Windows::FrameworkTemplate
[System.Windows.Localizability(System.Windows.LocalizationCategory.None, Readability=System.Windows.Readability.Unreadable)]
[System.Windows.Markup.DictionaryKeyProperty("TargetType")]
public class ControlTemplate : System.Windows.FrameworkTemplate
[<System.Windows.Localizability(System.Windows.LocalizationCategory.None, Readability=System.Windows.Readability.Unreadable)>]
[<System.Windows.Markup.DictionaryKeyProperty("TargetType")>]
type ControlTemplate = class
    inherit FrameworkTemplate
Public Class ControlTemplate
Inherits FrameworkTemplate
Devralma
Öznitelikler

Örnekler

Aşağıda, değerini Button Style ayarlayan ControlTemplate bir Buttongösterilmektedir:

<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>

Bu uygulandığında Button , olarak görünür Ellipse:

ControlTemplate düğmesi örneği

yukarıdaki örnekte olduğu gibi özelliğini Control yeni ControlTemplate olarak ayarladığınızdaTemplate, şablonun tamamını değiştirirsiniz. Button Odaktayken veya basıldığında görünümü, değiştirdiğiniz düğmenin varsayılan görünümünün bir parçasıdır. Bu nedenle, gereksinimlerinize bağlı olarak, aşağıdaki örnekte olduğu gibi düğmeye basıldığında nasıl görünmesi gerektiğini tanımınıza eklemek isteyebilirsiniz:

<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>

Bu örnekte burada gösterilmeyen kaynaklara başvurduğunu unutmayın. Tam örnek için bkz . ControlTemplates Örneği ile Stil Oluşturma. Bu örnek, birçok denetim için denetim şablonları örnekleri sağlar ve denetim şablonları oluşturmaya başlamanın en iyi yoludur.

Açıklamalar

denetimin ControlTemplate görsel yapısını belirtmenize olanak tanır. Denetim yazarı varsayılanı ControlTemplate tanımlayabilir ve uygulama yazarı denetimin görsel yapısını yeniden yapılandırmak için öğesini geçersiz kılabilir ControlTemplate .

Denetim şablon oluşturma, WPF stil oluşturma ve şablon oluşturma modeli tarafından sunulan birçok özellik arasında yer alır. Stil oluşturma ve şablon oluşturma modeli, birçok durumda kendi denetimlerinizi yazmanız gerekmeyecek kadar büyük bir esneklik sağlar. Denetiminizin görselleştirmesini değiştirmek veya var olan bir denetimi değiştirmek ControlTemplate isteyen bir uygulama yazarıysanız örnekler ve ayrıntılı bir tartışma için Stil oluşturma ve Şablon Oluşturma konusuna bakın.

Kendi denetiminizi yazıyorsanız, Denetim Yazmaya Genel Bakış bölümündeki "Özel Denetim Oluşturma" bölümüne bakın.

, ControlTemplate stiller de dahil olmak üzere dış kullanıcılar ve nesneler tarafından görülemeyen, bağımsız bir uygulama ayrıntı birimi olarak tasarlanmıştır. Denetim şablonunun içeriğini işlemenin tek yolu aynı denetim şablonunun içindendir.

XAML Özellik Öğesi Kullanımı

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

XAML Değerleri

Controltemplate
veya türetilmiş bir sınıf için ControlTemplate nesne öğesi.

VisualTreeRootNode
öğesinin (veya türetilmiş bir sınıfın ControlTemplate ) hemen alt öğesi olarak tek bir XAML öğesi. Şablonların tek bir kök düğümü olmalıdır. Yararlı bir şablon oluşturmak için VisualTreeRootNode olarak seçilen öğenin, genellikle birden çok alt öğeyi destekleyen bir model olan kendi içerik modelini desteklemesi beklenir.

VisualTreeNodeContents
Amaçlanan şablonu tamamlayan bir veya daha fazla öğe. VisualTreeRootNode olarak seçilen öğe yalnızca tek bir alt öğeyi destekliyorsa, VisualTreeNodeContents olarak bildirilen yalnızca bir öğe olabilir. Seçilen VisualTreeRootNode bir metin içeriği özelliğini destekliyorsa metin içeriği sağlamak da (nadir olsa da) mümkündür.

Oluşturucular

ControlTemplate()

ControlTemplate sınıfının yeni bir örneğini başlatır.

ControlTemplate(Type)

Belirtilen hedef türüyle sınıfının yeni bir örneğini ControlTemplate başlatır.

Özellikler

Dispatcher

Dispatcher Bunun DispatcherObject ilişkili olduğunu alır.

(Devralındığı yer: DispatcherObject)
HasContent

Bu şablonun iyileştirilmiş içeriğe sahip olup olmadığını gösteren bir değer alır.

(Devralındığı yer: FrameworkTemplate)
IsSealed

Bu nesnenin değiştirilemez durumda olup olmadığını belirten bir değer alır.

(Devralındığı yer: FrameworkTemplate)
Resources

Bu şablon kapsamında kullanılabilecek kaynak koleksiyonunu alır veya ayarlar.

(Devralındığı yer: FrameworkTemplate)
TargetType

Bunun ControlTemplate hedeflendiği türü alır veya ayarlar.

Template

Şablon bir yazıcı tarafından tanımlandığında veya uygulandığında şablon için XAML düğümlerini kaydeden veya oynatan nesneye başvuru alır veya ayarlar.

(Devralındığı yer: FrameworkTemplate)
Triggers

Özellik değişikliklerini uygulayan veya belirtilen koşullara göre eylemler gerçekleştiren bir nesne koleksiyonu TriggerBase alır.

VisualTree

Şablonun kök düğümünü alır veya ayarlar.

(Devralındığı yer: FrameworkTemplate)

Yöntemler

CheckAccess()

Çağıran iş parçacığının bu DispatcherObjectöğesine erişimi olup olmadığını belirler.

(Devralındığı yer: DispatcherObject)
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
FindName(String, FrameworkElement)

Bu şablonda tanımlanan belirtilen adla ilişkilendirilmiş öğeyi bulur.

(Devralındığı yer: FrameworkTemplate)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
LoadContent()

Şablonun içeriğini bir nesnenin örneği olarak yükler ve içeriğin kök öğesini döndürür.

(Devralındığı yer: FrameworkTemplate)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
RegisterName(String, Object)

Geçerli ad kapsamına yeni bir ad/nesne çifti kaydeder.

(Devralındığı yer: FrameworkTemplate)
Seal()

Şablonu değiştirilemeyecek şekilde kilitler.

(Devralındığı yer: FrameworkTemplate)
ShouldSerializeResources(XamlDesignerSerializationManager)

Serileştirme işlemlerinin bu sınıfın örneklerinde özelliğin Resources değerini seri hale getirip getirmemesi gerektiğini belirten bir değer döndürür.

(Devralındığı yer: FrameworkTemplate)
ShouldSerializeVisualTree()

Serileştirme işlemlerinin bu sınıfın örneklerinde özelliğin VisualTree değerini seri hale getirip getirmemesi gerektiğini belirten bir değer döndürür.

(Devralındığı yer: FrameworkTemplate)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
UnregisterName(String)

XAML ad kapsamlarından bir ad/nesne eşlemesini kaldırır.

(Devralındığı yer: FrameworkTemplate)
ValidateTemplatedParent(FrameworkElement)

Şablonlu üst öğeyi bir dizi kurala göre denetler.

VerifyAccess()

Çağıran iş parçacığının bu DispatcherObjecterişimine sahip olmasını zorlar.

(Devralındığı yer: DispatcherObject)

Belirtik Arabirim Kullanımları

INameScope.FindName(String)

Sağlanan tanımlayıcı ada sahip bir nesne döndürür.

(Devralındığı yer: FrameworkTemplate)
IQueryAmbient.IsAmbientPropertyAvailable(String)

Belirtilen bir ortam özelliğinin geçerli kapsamda kullanılabilir olup olmadığını sorgular.

(Devralındığı yer: FrameworkTemplate)

Şunlara uygulanır

Ayrıca bkz.