Erweitern Minimieren

Control.Template Property

Ruft eine Steuerelementvorlage ab oder legt diese fest. Mit der Steuerelementvorlage wird die visuelle Darstellung eines Steuerelements in der Benutzeroberfläche und in XAML-Markup definiert.

Syntax


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

Der Schlüssel, der die angeforderte Vorlage identifiziert. Der Schlüssel verweist auf ein ResourceDictionary in eine vorhandene Ressource.

Hinweis  Das Erstellen von Eigenschaftenelementsyntax für die Definition einer Inlinevorlage ist technisch möglich, wird jedoch für die meisten Vorlagenszenarios nicht empfohlen.

controlTypeName

Das Zeichenfolgenformat vom Type für ein Steuerelement.

templateRoot

Ein einzelnes Objektelement (muss von FrameworkElement abgeleitet sein), das das Stammelement einer Vorlage definiert. Weitere Informationen darüber, was als Vorlagenstamm verwendet werden kann, finden Sie unter Schnellstart: Steuerelementvorlagen.

Eigenschaftswert

Typ: ControlTemplate

Die Vorlage, die die Darstellung der Control definiert. ControlTemplate muss genau ein Stammelement als Inhalt haben.

Hinweise

Die zweite XAML-Syntax, die oben angezeigt wird, ist eine Setter-Syntax als Teil eines Style. So wird ein Template-Wert für ein Control in nahezu allen Fällen definiert.

TargetType ist ein erforderliches Attribut in allen ControlTemplate-Elementen, die als ein Template-Wert verwendet werden. Der Wert sollte der TargetType-Eigenschaft für den Style entsprechen, der den Setter für die Template enthält, wenn Sie eine Stil-Setter-Syntax verwenden.

Das ControlTemplate bestimmt die Darstellung eines Control. Wenn ein Control über kein ControlTemplate verfügt, wird das Control in der App nicht angezeigt. Der Steuerelemententwickler definiert die Standardsteuerelementvorlage, und der App-Entwickler kann die ControlTemplate-XAML überschreiben, um die visuelle Struktur des Steuerelements neu zu definieren.

Control-Vorlagen werden üblicherweise in XAML (Extensible Application Markup Language) als Teil eines steuerelementspezifischen impliziten Formats festgelegt. In diesem Fall wird ein Property-Wert im Setter als Zeichenfolge "Template" festgelegt, und der Setter.Value-Wert wird als Eigenschaftenelement festgelegt, das ein ControlTemplate-Objektelement enthält. Dies ist beispielsweise die Style, die einen Template-Wert für ScrollViewer definiert. Dies ist ein Beispiel eines impliziten Stils, in dem Style in einem ResourceDictionary sein kann, jedoch kein x:Key-Attribut erfordert.



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

Stile und Vorlagen

Sie können Setter in einem Style verwenden, um Werte auf eine beliebige Abhängigkeitseigenschaft anzuwenden. Mit dem Setter für die Template-Eigenschaft einer von Control abgeleiteten Klasse wird jedoch der Großteil des XAML-Markups in einem typischen Style gebildet. Wenn Style verwendet wird, um eine Steuerelementvorlage zu definieren, sollten der TargetType des Style-Elements und der TargetType des ControlTemplate-Elements für den zugehörigen Control.Template-Setter immer den gleichen Wert verwenden. Der Vorlagen-Setter definiert die grundlegende, auf Vorlagen basierende Benutzeroberflächendefinition für ein Steuerelement, in dem diese Vorlage angewendet wird. Außerdem sind die visuellen Zustände für ein Steuerelement und andere zustandsbasierte UI-Definitionen wie Standarddesignübergänge enthalten. Für ein komplexes Steuerelement wie ListBox kann die darin enthaltene Standardvorlage Style und ControlTemplate Hunderte von XAML-Zeilen umfassen. Weitere Informationen zur Rolle von Template in den Steuervorlagenenszenarien, finden Sie unter Schnellstart: Steuerelementvorlagen.

Implizite Stile

Sie können Stile so definieren, dass ein Style implizit von allen Objekten desselben TargetType verwendet wird, ohne dass jede Instanz eines solchen Objekts auf den Style als FrameworkElement.Style-Wert besonders verweisen muss. Wenn eine <Style>-Ressource in einem ResourceDictionary ohne ein -x:Key-Attribut deklariert wird, verwendet der x:Key -Wert den Wert der TargetType-Eigenschaft. Wenn Sie den Stil implizit festlegen, wird der Stil nur auf die Typen angewendet, die exakt mit TargetType übereinstimmen, nicht auf Elemente, die vom TargetType-Wert abgeleitet wurden. Wenn Sie z. B. implizit ein Format für alle ToggleButton-Steuerelemente in der Anwendung erstellen und die Anwendung ToggleButton- und CheckBox -Steuerelemente enthält (CheckBox leitet sich von ToggleButton ab), wird das implizite "ToggleButton"-Format nur auf die ToggleButton-Steuerelemente angewendet.

Beispiele

Dieses Beispiel zeigt eine vollständigere Steuerelementvorlage, die als Style und Setter mit Setter.Property-Wert von "Template" definiert ist. Dies ist ein benanntes Format für ein RadioButton-Steuerelement. Es schließt die Vorlagenelemente ein, die normalerweise Teil einer funktionalen Steuerelementvorlage sind, wie ein an VisualStateManager.VisualStateGroups angefügtes Eigenschaftenelement, das dem Stammelement der Vorlage angefügt wird, und x:Name-Attribut-Werte, die jedem der gut sichtbaren Steuerelementteile zugewiesen werden.



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


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

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

Metadaten

Windows.winmd

Siehe auch

Schnellstart: Steuerelementvorlagen
Control
OnApplyTemplate
GetTemplateChild
ControlTemplate
Style

 

 

Anzeigen:
© 2015 Microsoft