FrameworkElement.OnApplyTemplate Méthode

Définition

Appelé chaque fois que du code d’application ou des processus internes (tels qu’une passe de disposition de reconstruction) appelleNt ApplyTemplate. En termes simples, 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 post-modèle par défaut d’une classe.

protected:
 virtual void OnApplyTemplate() = OnApplyTemplate;
void OnApplyTemplate();
protected virtual void OnApplyTemplate();
function onApplyTemplate()
Protected Overridable Sub OnApplyTemplate ()

Exemples

Cet exemple montre un OnApplyTemplate remplacement défini par un contrôle personnalisé. Le remplacement est conçu pour prendre en compte les appelants susceptibles de définir et d’appliquer leur propre modèle de contrôle via le modèle et le système de style. Dans le cadre de sa définition, le contrôle attribue les éléments nommés dans un modèle qui sont requis, tels que « UpButton ». Récupère ensuite OnApplyTemplate les références d’objets basées sur ce contrat d’affectation de noms lorsque le modèle est chargé, en appelant GetTemplateChild. (Les valeurs définies, par exemple « UpButtonElement », font référence à des champs privés définis au niveau de la classe afin que d’autres membres de la classe puissent référencer cette partie en tant qu’objet au moment de l’exécution.) En outre, cet exemple appelle la méthode UpdateStates privée (définition non affichée). Il s’agit d’un autre scénario courant pour OnApplyTemplates’assurer que l’état visuel est défini pour l’état de départ du contrôle, dans ce cas en appelant une méthode privée qui prend en compte 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);
}

Remarques

Bien qu’il s’agisse OnApplyTemplate d’une méthode définie par la classe FrameworkElement , le OnApplyTemplate comportement et les scénarios de substitution OnApplyTemplate sont principalement pertinents pour une sous-classe Control . En effet, la propriété Template que vous définissez généralement dans un fichier XAML et la logique de Windows Runtime interne qui applique les modèles sont spécifiquement destinées aux contrôles. Un comportement de modèle spécialisé existe également pour ContentPresenter et ContentControl.

Remarques aux implémenteurs

Il existe une implémentation de base de cette méthode implémentée en tant que 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. Le fait de 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érez le reste d’une arborescence visuelle à l’aide de code personnalisé.
  • Exécutez du code qui ne peut fonctionner qu’une fois que l’arborescence visuelle définie par XAML à partir de modèles a été appliquée. Par exemple, le code qui obtient des références à des éléments nommés provenant d’un modèle, en appelant GetTemplateChild, afin que les membres de ces parties puissent être référencés par un autre code d’exécution post-modèle.
  • Introduisez des services qui n’ont de sens qu’une fois l’arborescence visuelle des modèles terminée.
  • Attachez des gestionnaires d’événements définis par une classe à des parties du modèle ou au parent de contrôle d’un contrôle composite. Par exemple, vous pouvez souhaiter que la logique de classe gère les événements KeyDown routés à partir d’un modèle TextBox faisant partie d’un contrôle composite. Vous devez procéder ainsi afin que les états d’interface utilisateur soient mis à jour en fonction de l’événement d’entrée de bas niveau de la partie, et d’autres événements spécifiques à votre contrôle et déclenchés par le parent de contrôle sont déclenchés à la place.
  • Définissez les états et les propriétés des éléments du modèle qui dépendent d’autres facteurs. Par exemple, les valeurs de propriété peuvent être détectables uniquement 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 bien conçu doit gérer ses états visuels avec VisualStateManager. Pour plus d’informations sur ce concept, consultez Modèles de contrôle XAML.

OnApplyTemplate est souvent un point plus approprié pour gérer les ajustements de l’arborescence visuelle créée par modèle que l’événement Loaded . L’événement Loaded peut se produire avant l’application du modèle, et l’arborescence visuelle peut être incomplète à compter de Loaded.

S’applique à

Voir aussi