> Tech > Etat des pages de l’application Windows Phone

Etat des pages de l’application Windows Phone

Tech - Par iTPro - Publié le 24 avril 2012
email

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.

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 gratuitement cette ressource

Protection des Données : 10 Best Practices

Protection des Données : 10 Best Practices

Le TOP 10 des meilleures pratiques, processus et solutions de sécurité pour mettre en œuvre une protection efficace des données et limiter au maximum les répercutions d’une violation de données.

Tech - Par iTPro - Publié le 24 avril 2012