FrameworkElement.OnApplyTemplate Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Appelé chaque fois que le code d’application ou les processus internes (par exemple, une passe de disposition de reconstruction) appelleNt ApplyTemplate. En termes les plus 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 potentiellement en définissant et en appliquant 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 requis, tels que « UpButton ». Récupère ensuite OnApplyTemplate les références d’objet en fonction de 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 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 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 : OnApplyTemplateassurez-vous que l’état visuel est défini pour l’état de démarrage 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);
}
Remarques
Bien qu’il OnApplyTemplate s’agit 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 . Cela est dû au fait que la propriété Template que vous définissez généralement dans un fichier XAML et la logique interne Windows Runtime qui applique les modèles sont spécifiquement destinées aux contrôles. Le comportement de modèle spécialisé existe également pour ContentPresenter et ContentControl.
Remarques sur les 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. L’échec de référence de 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 point de notification ou d’entrée pour les scénarios suivants :
- Générez le reste d’une arborescence visuelle à l’aide du 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 d’autres codes d’exécution post-modèle.
- Introduisez des services qui n’ont aucun sens après la fin de l’arborescence visuelle à partir de modèles.
- Attachez des gestionnaires d’événements définis par la classe à des parties du modèle ou au parent de contrôle d’un contrôle composite. Par exemple, vous souhaiterez peut-être que la logique de classe gère les événements KeyDown routés à partir d’une partie de modèle TextBox d’un contrôle composite. Pour ce faire, les états de l’interface utilisateur sont mis à jour en fonction de l’événement d’entrée de bas niveau du composant, 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 dans le modèle qui dépendent d’autres facteurs. Par exemple, les valeurs de propriété peuvent être détectables uniquement en sachant 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 les modèles de contrôle XAML.
OnApplyTemplate est souvent un point plus approprié pour traiter les ajustements de l’arborescence visuelle créée par le 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 à partir de Loaded.