Événements de la durée de vie d'un objet
Cette rubrique décrit les événements WPF spécifiques qui correspondent aux étapes de la durée de vie de création, d'utilisation et de destruction d'un objet.
Cette rubrique comprend les sections suivantes.
- Composants requis
- Événements de la durée de vie d'un objet
- Événements de durée de vie communs des éléments
- Éléments de modèle d'application d'événements de durée de vie
- Rubriques connexes
Composants requis
Cette rubrique suppose que vous maîtrisiez les propriétés de dépendance du point de vue d'un consommateur de propriétés de dépendance existantes dans les classes Windows Presentation Foundation (WPF) et que vous ayez lu la rubrique Vue d'ensemble des propriétés de dépendance. Pour pouvoir suivre les exemples dans cette rubrique, vous devez également maîtriser le Extensible Application Markup Language (XAML) (voir Vue d'ensemble du langage XAML (WPF)) et savoir écrire des applications WPF.
Événements de la durée de vie d'un objet
Tous les objets du code managé Microsoft .NET Framework passent par des phases similaires de durée de vie, de création, d'utilisation et de destruction. De nombreux objets ont également une étape de finalisation de vie qui se produit dans le cadre de la phase de destruction. Les objets WPF, plus spécifiquement les objets visuels que WPF identifie comme éléments, ont également un ensemble d'étapes communes de vie d'objet. Les modèles de programmation et d'application WPF exposent ces phases sous la forme d'une série d'événements. Il existe quatre types principaux d'objets dans WPF en ce qui concerne les événements de durée de vie ; éléments en général, éléments de fenêtre, hôtes de navigation et objets d'application. Les fenêtres et les hôtes de navigation appartiennent également au groupe plus large des objets visuels (éléments). Cette rubrique décrit les événements de durée de vie communs à tous les éléments et présente les événements plus spécifiques qui s'appliquent aux définitions d'application, aux fenêtres ou aux hôtes de navigation.
Événements de durée de vie communs des éléments
Tout élément de niveau d'infrastructure WPF (objets dérivés de FrameworkElement ou de FrameworkContentElement) a trois événements de durée de vie communs : Initialized, Loaded et Unloaded.
Initialized
Initialized est déclenché en premier et correspond approximativement à l'initialisation de l'objet par l'appel à son constructeur. Étant donné que l'événement est déclenché en réponse à l'initialisation, vous êtes assuré que toutes les propriétés de l'objet sont définies. (Il existe une exception pour les utilisations d'expressions, telles que les ressources dynamiques ou la liaison ; ces expressions ne seront pas évaluées.) Toutes les propriétés devant être définies, la séquence de déclenchement de Initialized par des éléments imbriqués définis dans le balisage a lieu à partir des éléments les plus éloignés dans l'arborescence d'éléments, puis se poursuit avec les éléments parents vers la racine. Cet ordre s'explique par le fait que les relations parent-enfant et contenant-contenu sont des propriétés. Par conséquent, le parent ne peut pas signaler l'initialisation tant que les éléments enfants qui remplissent la propriété ne sont pas complètement initialisés.
Lorsque vous écrivez des gestionnaires en réponse à l'événement Initialized, vous devez tenir compte du fait que tous les autres éléments de l'arborescence des éléments (arborescence logique ou arborescence d'éléments visuels), près de l'emplacement où le gestionnaire est attaché, ne sont pas obligatoirement créés, notamment les éléments parents. Les variables membres peuvent être null ou les sources de données peuvent ne pas être encore remplies par la liaison sous-jacente (même au niveau de l'expression).
Loaded
Loaded est déclenché ensuite. L'événement Loaded est déclenché avant le rendu final, mais après que le système de disposition a calculé toutes les valeurs nécessaires pour le rendu. Loaded implique que l'arborescence logique dans laquelle un élément est contenu est terminée et se connecte à une source de présentation qui fournit le HWND et la surface de rendu. La liaison de données standard (liaison à des sources locales, telles que d'autres propriétés ou des sources de données directement définies) se produira avant Loaded. La liaison de données asynchrone (sources externes ou dynamiques) peut avoir eu lieu, mais du fait même de sa nature asynchrone elle peut ne pas avoir eu lieu.
Le mécanisme de déclenchement de l'événement Loaded est différent de celui de Initialized. L'événement Initialized est déclenché élément par un élément sans coordination directe par une arborescence d'éléments complétée. En revanche, l'événement Loaded est déclenché de manière coordonnée dans l'ensemble de l'arborescence d'éléments (notamment dans l'arborescence logique). Lorsque tous les éléments de l'arborescence ont un état les considérant comme étant chargés, l'événement Loaded est déclenché en premier à la racine de l'élément. L'événement Loaded est déclenché successivement sur chaque élément enfant.
Remarque |
---|
Ce comportement peut ressembler superficiellement au tunneling pour un événement routé.Toutefois, aucune information n'est passée d'un événement vers un autre.Chaque élément a toujours la possibilité de gérer son événement Loaded et le marquage des données d'événement comme étant gérées n'a aucun effet au-delà de l'élément. |
Unloaded
Unloaded est déclenché en dernier et il est initialisé par la source de présentation ou le parent visuel à supprimer. Lorsque Unloaded est déclenché et géré, l'élément qui correspond au parent source de l'événement (défini par la propriété Parent) ou la définition de tout élément au-dessus dans l'arborescence logique ou visuelle peuvent avoir déjà été annulés, ce qui implique que la liaison de données, les références à une ressource et les styles peuvent ne pas être avoir leur valeur normale ou leur dernière valeur runtime connue.
Éléments de modèle d'application d'événements de durée de vie
Les éléments de modèle d'application suivants reposent sur les événements de durée de vie communs des éléments : Application, Window, Page, NavigationWindow et Frame. Ces éléments étendent les événements de durée de vie communs avec des événements supplémentaires en rapport avec leur fonction. Ils sont décrits en détail dans les emplacements suivants :