2011-07-26 2 views
1

Je veux savoir quelles sont vos stratégies pour enregistrer l'état dans une application Windows Phone 7 (wp7). quand je dis l'état, je veux dire l'état de vue de modèle de chaque page dans la pile.stratégie de désactivation dans Windows Phone 7, comment enregistrer les états de plusieurs pages

récemment, j'ai posé une question à, problems with tombstoning in WP7, cannot tell if i need to restore or instantiate/query new data, et la solution fonctionne. Cependant, cette approche semble être ad-hoc et/ou spécifique à la page seulement. le code n'enregistre pas les états des pages qui le précèdent. Je crois comprendre que lorsque l'application est activée ou désactivée, vous devez gérer la restauration ou la sauvegarde de l'état de l'application, respectivement. le produit code-behind pour App.xaml.cs génère les méthodes

private void Application_Activated(object sender, ActivatedEventArgs e) 
private void Application_Deactivated(object sender, DeactivatedEventArgs e) 

comment pouvons-nous tirer profit de ces méthodes pour sauver un état des applications plein lorsqu'ils sont désactivés? Je n'ai pas encore trouvé un bon tutoriel en ligne.

toute aide est appréciée.

Répondre

0

En pratique, vous pourriez aussi bien oublier ces méthodes. Vous ne devriez pas considérer le décor comme un état persistant, mais plutôt comme des données persistantes.

Vous ne pouvez évidemment pas faire tomber l'état de votre application entière. Et d'une manière générale, l'état de l'interface utilisateur d'une page ne sera connu que de la page individuelle. Ce que vous devez faire est de comprendre quelles états de l'interface utilisateur que vous souhaitez persister, le cas échéant, puis les conserver avec les données (évidemment) dans PhoneApplicationService.State ou IsolatedStorage.ApplicationSettings (en fonction de la taille de les données).

Pour ViewModels, il est assez facile de les supprimer. Ajoutez simplement le code pour vérifier si une instance désactivée existe, puis chargez les données du viewmodel avec cela lors de la création. Et si vous liez tous les paramètres de l'interface utilisateur à votre viewmodel, vous êtes à peu près en or.

Le code de votre question précédente, peut être utilisé dans votre constructeur ViewModels avec à peu près le même résultat. Et pour persister constamment le ViewModel, attachez simplement un gestionnaire local pour PropertyChanged et enregistrez l'état de ViewModel chaque fois que vous l'appelez.

Questions connexes