Partager via


ControlTemplate Classe

Définition

Définit l’arborescence d’éléments utilisée comme modèle de contrôle pour un contrôle.

public ref class ControlTemplate sealed : FrameworkTemplate
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ControlTemplate : FrameworkTemplate
Public NotInheritable Class ControlTemplate
Inherits FrameworkTemplate
<ControlTemplate ...>
    templateRootElement
</ControlTemplate>
Héritage
Object Platform::Object IInspectable DependencyObject FrameworkTemplate ControlTemplate
Attributs

Exemples

L’exemple suivant crée un ControlTemplate simple pour un Button. Le modèle de contrôle contient une grille et spécifie ce comportement :

  • Lorsque l’utilisateur place la souris sur le bouton, la grille passe du vert au rouge pendant une demi-seconde.
  • Lorsque l’utilisateur éloigne la souris du bouton, la grille revient immédiatement au vert.
<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>

Vous pouvez voir le modèle complet pour chaque contrôle XAML dans le fichier generic.xaml . Ce fichier se trouve dans le dossier (Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic.

Remarques

Pour plus d’informations et d’exemples, consultez Modèles de contrôle XAML.

ControlTemplate est utilisé comme valeur de la propriété Control.Template , qui définit les visuels d’un contrôle en appliquant le modèle. Vous définissez presque toujours un ControlTemplate en tant que ressource XAML, à l’aide d’une clé implicite TargetType identique à un style qui définit Control.Template avec un setter. Vous affectez rarement, voire jamais, une valeur pour Control.Template directement sur un contrôle instance.

Il n’y a vraiment que deux propriétés que vous utilisez lors de la définition d’un ControlTemplate : le TargetType et le contenu XAML implicite. ControlTemplate hérite du comportement de contenu XAML implicite de son parent FrameworkTemplate . Fondamentalement, l’élément contenu dans un ControlTemplate tel que défini dans XAML affecte un élément racine pour une structure supplémentaire d’éléments XAML qui définissent le modèle. Il s’agit de définir une propriété « Template » qui ne peut pas être examinée par la suite par le code et qui a uniquement une signification pour la façon dont l’analyseur XAML attribue du contenu aux contrôles en fonction de l’application de ce modèle.

Pour que son contenu soit défini à partir d’un ControlTemplate, un élément de contrôle doit être une sous-classe Control true, afin qu’il ait la propriété Control.Template . Il existe d’autres cas où les modèles appliquent du contenu, mais cela implique généralement l’une des autres classes de modèle dérivées de FrameworkTemplate (DataTemplate ou ItemsPanelTemplate).

Les modèles de contrôle fournissent les visuels et les parties qui composent un instance d’un contrôle tel qu’il apparaît dans l’interface utilisateur d’une application. Au moment de l’exécution, le modèle a déjà été appliqué. Par conséquent, toutes les parties créées à partir du modèle sont désormais véritablement des parties du contrôle et sont accessibles par des techniques telles que l’examen des namescopes XAML à partir du contenu du contrôle ou l’utilisation de la classe VisualTreeHelper . Des événements tels que les événements d’entrée exposent parfois les parties d’un contrôle provenant du modèle de contrôle appliqué.

Il existe des façons d’accéder au contenu défini par un modèle avant ou après l’application du modèle à un instance de contrôle spécifique. Consultez OnApplyTemplate ou GetTemplateChild.

Point dans le temps réel où un ControlTemplate est appliqué à un contrôle instance peut être détecté, car cela appelle la méthode virtuelle protégée OnApplyTemplate. Tant que le contrôle n’est pas scellé, vous pouvez sous-classer un contrôle afin d’avoir la possibilité de remplacer OnApplyTemplate. Ce remplacement peut être écrit pour effectuer des actions qui ne seraient pas possibles avant l’application du modèle. Par exemple, vous pouvez relier des gestionnaires d’événements pour contrôler des parties ou définir des propriétés de contrôle pour référencer des parties d’objet créées à partir du modèle mais qui n’ont pas commencé par une valeur d’extension de balisage {TemplateBinding} .

Constructeurs

ControlTemplate()

Initialise une nouvelle instance de la classe ControlTemplate.

Propriétés

Dispatcher

Retourne null toujours dans une application SDK d'application Windows. Utilisez DispatcherQueue à la place.

(Hérité de DependencyObject)
DispatcherQueue

Obtient le DispatcherQueue auquel cet objet est associé. représente DispatcherQueue une fonctionnalité qui peut accéder au DependencyObject sur le thread d’interface utilisateur, même si le code est initié par un thread autre que l’interface utilisateur.

(Hérité de DependencyObject)
TargetType

Obtient ou définit le type auquel le ControlTemplate est appliqué.

Méthodes

ClearValue(DependencyProperty)

Efface la valeur locale d’une propriété de dépendance.

(Hérité de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Retourne toute valeur de base établie pour une propriété de dépendance, qui s’appliquerait dans les cas où une animation n’est pas active.

(Hérité de DependencyObject)
GetValue(DependencyProperty)

Retourne la valeur effective actuelle d’une propriété de dépendance à partir d’un DependencyObject.

(Hérité de DependencyObject)
ReadLocalValue(DependencyProperty)

Retourne la valeur locale d’une propriété de dépendance, si une valeur locale est définie.

(Hérité de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Inscrit une fonction de notification pour écouter les modifications apportées à un DependencyProperty spécifique sur ce instance DependencyObject.

(Hérité de DependencyObject)
SetValue(DependencyProperty, Object)

Définit la valeur locale d’une propriété de dépendance sur un DependencyObject.

(Hérité de DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annule une notification de modification précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

S’applique à

Voir aussi