Les événements Deactivated et Activated sur l’objet Application sont utiles pour la persistance des données transitoires à l’échelle de l’application.
Etat des pages de l’application Windows Phone
Toutefois, il est difficile de les employer pour la persistance d’informations des pages situées dans la pile de retours en arrière. Heureusement, il existe un bien meilleur moyen de gérer le « tombstoning » page par page.
Windows Phone
Chaque page au sein de votre application héritera de la classe PhoneApplicationPage. Cette classe a une propriété, State, qui est un dictionnaire des objets avec des clés prenant la forme de chaînes. A tout moment pendant la durée de vie de la page, vous pouvez lire et écrire sur ce dictionnaire. Toutefois, dans la majorité des cas, vous allez écrire dans la méthode OnNavigatedFrom et lire à partir de la méthode OnNavigatedTo.
Lorsque l’utilisateur accède à une page, peu importe qu’il le fasse à partir d’une page précédente de l’application, qu’il retourne à la page à partir d’un autre emplacement de l’application ou qu’il y revienne après avoir fermé une autre application, la méthode OnNavigatedTo est appelée sur la page. A l’inverse, lorsque l’utilisateur quitte une page pour accéder à une autre page de l’application, revenir à une page précédente de la même application ou passer à une autre application, la méthode OnNavigatedFrom est appelée.
Examinons un peu plus en détail ces méthodes. La figure 2 propose une illustration de base afin de vous aider à appréhender la séquence des événements de navigation. Le côté gauche représente l’utilisateur accédant à cette page à partir d’une page précédente dans l’application (1) et utilisant la touche Back pour revenir à la page précédente au sein de la même application (4).
Le côté droit représente l’utilisateur accédant à une autre application ou à une autre page au sein de la même application (2), puis revenant à l’application à partir de l’autre application ou de l’autre page de la même application (3).
Dans notre cas, la page en question a un seul contrôle TextBox intitulé MessageText. Lorsque l’utilisateur quitte la page, dans la méthode OnNavigatedFrom, la propriété Text actuelle de MessageText est ajoutée au dictionnaire State au moyen de la clé « Message » :
protected override void OnNavigatedFrom(
System.Windows.Navigation.NavigationEventArgs e) {
base.OnNavigatedFrom(e);
this.State[« Message »] = this.MessageText.Text;
}
Lorsque l’utilisateur accède à la page, le dictionnaire State est interrogé pout déterminer s’il existe une valeur pour la clé « Message ». Si c’est le cas, elle est affectée à la propriété Text de MessageText :
protected override void OnNavigatedTo(
System.Windows.Navigation.NavigationEventArgs e) {
base.OnNavigatedTo(e);
object text;
if (this.State.TryGetValue(« Message », out text))
{
this.MessageText.Text = text as string;
}
}
Voyons comment les choses se dérouleront. Lorsque l’utilisateur accède à la page pour la première fois (1), celle-ci est créée et le dictionnaire State est initialisé. Dans ce cas, lorsque la méthode OnNavigatedTo est appelée, le dictionnaire State est vide et la propriété Text n’est pas définie. Ce comportement est escompté car l’utilisateur s’attend à voir la valeur par défaut de Text.
Si l’utilisateur quitte la page pour accéder à une autre application ou une autre page de la même application (2), la méthode OnNavigatedFrom est appelée et la propriété Text courante est conservée. Lorsque l’utilisateur revient ultérieurement (3), la méthode OnNavigatedTo est appelée. Cette fois, le dictionnaire State a une valeur pour la clé « Message », de sorte que la propriété Text de MessageText est définie. Le contrôle TextBox revient ainsi à l’état dans lequel l’utilisateur l’a laissé. Encore une fois, ce comportement était prévu.
Enfin, lorsque l’utilisateur clique sur le bouton Back pour revenir à la page précédente, la méthode OnNavigatedFrom est appelée de nouveau et la valeur courante de Text est conservée dans le dictionnaire State. Mais cette fois, comme la page est ensuite fermée, celle-ci et son dictionnaire State correspondant ne sont pas conservés.
Ce modèle traite chaque page de manière indépendante, ce qui facilite la persistance et la restauration de l’état transitoire dans le cadre des événements de navigation. Il existe encore certains cas limites nécessitant le recours aux événements Deactivated et Activated, mais dans la majorité des cas, le dictionnaire State de la page élimine d’éventuels problèmes de « tombstoning ». Ainsi, l’utilisateur bénéficie d’un mode de fonctionnement homogène sur l’ensemble de l’application.
Téléchargez cette ressource
Créer des agents dans Microsoft 365 Copilot
Insight vous guide dans l’utilisation de la nouvelle expérience de création d’agents dans Microsoft Copilot Studio, disponible dans Copilot Chat. Découvrez les étapes clés pour concevoir, configurer et déployer ces nouveaux agents et injecter la puissance de l’IA directement dans le flux de travail.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Dans l’œil du cyber-cyclone : l’excès d’optimisme constitue le risque principal pour la résilience des données
- Les 3 prédictions 2026 pour Java
- Infrastructures IT : 5 leviers concrets pour éviter les impasses technologiques
- Top 6 des priorités des DSI en 2026
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
