Windows Phone 7: quelle page est Etablir en cours d'activation lors de l'événement Application_Activated

StackOverflow https://stackoverflow.com/questions/4188468

Question

Je suis les principes de bonnes pratiques générales de restauration mon état persistant et aucun persistant et objets quand une application est à nouveau désactivés activé. Qui se trouve dans ce très bon article Microsoft

Les échantillons montrent une simple réactivation de la page principale d'une application. Cependant, comme mon application comporte plusieurs pages (qui peuvent tous être désactivés et therfore réactivés) et chacun est obligatoire à un objet ViewModel différent. Je voudrais savoir comment déterminer quelle page est en fin de compte va être activé pour que je puisse récupérer et selectivly désérialiser l'objet ViewModel correct pour cette page.

Ou est la meilleure pratique pour restaurer tous ViewModels ou est-il un autre modèle pour cela?

Était-ce utile?

La solution

Je l'ai mis en place un modèle simple qui est le mieux décrit comme -

  1. Dans l'application et l'événement s'Activated Désactivé, j'envoyer un message aux pages abonnées.
  2. Les pages qui adhèrent au message font la sérialisation / désérialisation des données.

J'utilise excellente bibliothèque MVVMLight de Laurent Bugnion pour Windows Phone 7 . Voici quelques exemples de code illustrant la diffusion de message -

// Ensure that application state is restored appropriately
private void Application_Activated(object sender, ActivatedEventArgs e)
{
   Messenger.Default.Send(new NotificationMessage<AppEvent>(AppEvent.Activated, string.Empty));
}

// Ensure that required application state is persisted here.
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
   Messenger.Default.Send(new NotificationMessage<AppEvent>(AppEvent.Deactivated, string.Empty));
}

Dans le constructeur d'une classe ViewModel, configuration I l'abonnement aux messages de notification -

// Register for application event notifications
Messenger.Default.Register<NotificationMessage<AppEvent>>(this, n =>
{
   switch (n.Content)
   {
      case AppEvent.Deactivated:
         // Save state here
         break;

      case AppEvent.Activate:
         // Restore state here
         break;
   }
}

Je trouve que cette stratégie, toutes les données pertinentes à la page qui est lié à un ViewModel est enregistré et restauré correctement.

HTH, indyfromoz

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top