FrameworkElement.OnApplyTemplate Method

Appelé chaque fois que le code d'application les ou processus internes (passage de structure de régénération, par exemple) appellent ApplyTemplate. Plus simplement, cela signifie que la méthode est appelée juste avant qu'un élément d'interface utilisateur ne s'affiche dans votre application. Remplacez cette méthode pour influencer la logique de modèle de publication par défaut d'une classe.

Syntaxe


protected virtual void OnApplyTemplate()

Paramètres

Ce Méthode ne possède pas de paramètres.

Remarques

Bien que OnApplyTemplate soit une méthode définie par la classe FrameworkElement, le comportement de OnApplyTemplate et les scénarios de substitution de OnApplyTemplate sont principalement appropriés à une sous-classe Control. Cela provient du fait que la propriété Template que vous définissez généralement dans un fichier XAML et la logique Windows Runtime qui s'applique aux modèles concernent spécifiquement les contrôles. Le comportement de modèle spécialisé existe également pour ContentPresenter et ContentControl.

Remarques à l'attention des implémenteurs

Il existe une implémentation de base de cette méthode implémentée comme comportement interne Windows Runtime, qui fournit une logique de disposition de base. Vous devez toujours appeler l'implémentation de base à partir de votre implémentation. Ne pas référencer l'implémentation de base peut entraîner un comportement de disposition indésirable.

Les classes dérivées peuvent utiliser cette méthode comme notification ou point d'entrée pour les scénarios suivants :

  • Génère le reste d'une arborescence d'éléments visuels à l'aide du code personnalisé.
  • Exécuter du code qui peut fonctionner uniquement si l'arborescence visuelle définie en XAML à partir de modèles a été appliquée. Par exemple, le code qui obtient des références aux éléments nommés issus d'un modèle, en appelant GetTemplateChild, afin que les membres de ces éléments puissent être référencés par un autre code d'exécution du modèle de publication.
  • Introduisez les services dont l'existence a un sens uniquement après l'achèvement de l'arborescence visuelle des modèles.
  • Liez les gestionnaires d'événements définis par classe aux parties du modèle, ou au parent de contrôle d'un contrôle composite. Par exemple, vous pouvez utiliser la logique de classe pour gérer les événements KeyDown routés à partir d'un modèle TextBox qui fait partie d'un contrôle composite. Vous procéderez ainsi afin que les rapports d'interface utilisateur soient mis à jour en fonction de l'événement d'entrée de niveau inférieur de la partie, et que d'autres événements spécifiques à votre contrôle et déclenchés par le parent de contrôle soient déclenchés à la place.
  • Définissez les états et propriétés des éléments du modèle qui dépendent d'autres facteurs. Par exemple, les valeurs de propriétés peuvent n'être détectables qu'en connaissant l'élément parent ou lorsqu'une classe dérivée spécifique utilise un modèle commun. Toutefois, notez qu'un contrôle correctement conçu doit gérer ses états visuels avec VisualStateManager. Pour plus d'informations sur ce concept, consultez Quickstart: Control templates.

OnApplyTemplate est souvent un moment plus approprié que l'événement Loaded pour traiter les ajustements de l'arborescence d'éléments visuels basée sur un modèle. L'événement Loaded peut se produire avant que le modèle ne soit appliqué, et l'arborescence d'éléments visuels peut être incomplète à partir de Loaded.

Exemples

Cet exemple illustre une substitution de la méthode OnApplyTemplate définie par un contrôle personnalisé. La substitution est conçue pour illustrer des appelants qui définissent et appliquent éventuellement leur propre modèle de contrôle via le système de modèle et de style. Dans le cadre de sa définition, le contrôle attribue les éléments nommés d'un modèle qui sont requis, tels que "UpButton". OnApplyTemplate récupère ensuite les références d'objet en fonction de ce contrat de désignation lorsque le modèle est chargé, appelant GetTemplateChild. (Les valeurs définies, par exemple "UpButtonElement", font référence aux champs privés définis au niveau de la classe afin que d'autres membres de la classe puissent référencer cette partie comme un objet au moment de l'exécution.) En outre, cet exemple appelle la méthode privée UpdateStates (définition non affichée). Ceci est un autre scénario classique pour OnApplyTemplate : vérifier que l'état visuel est défini pour l'état initial du contrôle, dans ce cas en appelant une méthode privée qui compte pour tous les états définis du contrôle et appelle GoToState pour définir l'état approprié.


protected override void OnApplyTemplate()
{
    UpButtonElement = GetTemplateChild("UpButton") as RepeatButton;
    DownButtonElement = GetTemplateChild("DownButton") as RepeatButton;
    TextElement = GetTemplateChild("TextBlock") as TextBlock;

    UpdateStates(false);
}


Configuration requise

Client minimal pris en charge

Windows 8

Serveur minimal pris en charge

Windows Server 2012

Espace de noms

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

Métadonnées

Windows.winmd

Voir aussi

FrameworkElement
ControlTemplate
GetTemplateChild
Démarrage rapide : application de styles aux contrôles

 

 

Afficher:
© 2014 Microsoft