Стратегия захоронения в Windows Phone 7, как сохранить состояния нескольких страниц - PullRequest
1 голос
/ 26 июля 2011

Я хочу знать, каковы ваши стратегии для сохранения состояния в приложении Windows Phone 7 (WP7). когда я говорю состояние, я имею в виду состояние просмотра модели каждой страницы в стеке.

недавно я задал вопрос по адресу проблемы с надгробием в WP7, не могу сказать, нужно ли мне восстанавливать или создавать / запрашивать новые данные , и решение работает. однако, этот подход, кажется, является специальным и / или специфичным для конкретной страницы. код не сохраняет состояния страниц, предшествующих ему.

Насколько я понимаю, когда приложение активируется или деактивируется, вы должны соответственно выполнять восстановление или резервное копирование состояния приложения. сгенерированный код для App.xaml.cs генерирует методы

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

как мы можем использовать эти методы для сохранения полного состояния приложений во время захоронения? я еще не нашел хороший учебник в Интернете.

любая помощь приветствуется.

1 Ответ

0 голосов
/ 26 июля 2011

На практике вы могли бы также забыть эти методы. Вы не должны думать о надгробии как о сохраняющемся состоянии, скорее как о сохраняющихся данных.

Вы, очевидно, не можете волшебным образом пометить состояние всего приложения. И вообще говоря, состояние пользовательского интерфейса страницы будет известно только для отдельной страницы.

Что вам нужно сделать, это выяснить, какие состояния пользовательского интерфейса вы хотите сохранить, если они есть, а затем сохранить их вместе с данными (очевидно) в PhoneApplicationService.State или IsolatedStorage.ApplicationSettings (в зависимости от размера данные).

Для ViewModels их легко захоронить. Просто добавьте код, чтобы проверить, существует ли захороненный экземпляр, и затем загрузите данные модели представления при создании. И если вы привязываете все настройки пользовательского интерфейса к своей модели представления, вы в значительной степени золотые.

Код из вашего предыдущего вопроса может быть использован в конструкторе ViewModels с почти таким же результатом. И чтобы постоянно сохранять ViewModel, просто подключите локальный обработчик для PropertyChanged и сохраняйте состояние ViewModel при каждом вызове.

...