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 bouton. 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 sur une demi-seconde.
  • Lorsque l’utilisateur déplace la souris loin du bouton, la grille revient immédiatement en 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 les 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é TargetType implicite identique à un style qui définit Control.Template avec un setter. Vous ne pouvez jamais affecter une valeur pour Control.Template directement sur une instance de contrôle.

Il n’existe vraiment que deux propriétés que vous utilisez lors de la définition d’un ControlTemplate : targetType et du contenu XAML implicite. ControlTemplate hérite du comportement de contenu XAML implicite de son parent FrameworkTemplate . En fait, l’élément contenu dans un ControlTemplate tel que défini en 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 affecte du contenu pour les 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 dispose de 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 une 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é, et donc 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 portées de noms XAML à partir du contenu du contrôle ou l’utilisation de la classe VisualTreeHelper . Les é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 le modèle avant ou après l’application du modèle à une instance de contrôle spécifique ; voir OnApplyTemplate ou GetTemplateChild.

Le point réel dans le temps où un ControlTemplate est appliqué à une instance de contrôle peut être détecté, car cela appelle la méthode virtuelle protégée par OnApplyTemplate . Tant que le contrôle n’est pas scellé, vous pouvez sous-classer un contrôle afin de pouvoir remplacer OnApplyTemplate. Cette substitution peut être écrite pour effectuer des actions qui ne seraient pas possibles avant l’application du modèle. Par exemple, vous pouvez connecter 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 qui ont été créées hors du modèle, mais qui n’ont pas commencé par une valeur d’extension de balisage {TemplateBinding} .

Constructeurs

Nom Description
ControlTemplate()

Initialise une nouvelle instance de la classe ControlTemplate .

Propriétés

Nom Description
Dispatcher

Retourne null toujours dans une application du Kit de développement logiciel (SDK) d’application Windows. Utilisez DispatcherQueue à la place.

(Hérité de DependencyObject)
DispatcherQueue

Obtient le DispatcherQueue résultat auquel cet objet est associé. Représente DispatcherQueue une installation qui peut accéder au DependencyObject thread d’interface utilisateur même si le code est initié par un thread non-interface utilisateur.

(Hérité de DependencyObject)
TargetType

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

Méthodes

Nom Description
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’applique 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 à une dependencyProperty spécifique sur cette 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 qui a été précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

S’applique à

Voir aussi