Я реализовал простой шаблон, который лучше всего описать как -
- В событии «Активировано и деактивировано» приложение отправляет сообщение на подписывающиеся страницы.
- Страницы, которые подписываются на сообщение, выполняют сериализацию / десериализацию данных.
Я использую Отличную библиотеку Лорана Бюньона MVVMLight для Windows Phone 7 . Вот пример кода, иллюстрирующего трансляцию сообщения -
// 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));
}
В конструкторе класса ViewModel я настраиваю подписку на уведомления -
// 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;
}
}
Я обнаружил, что с помощью этой стратегии все данные, относящиеся к странице, связанной с ViewModel, сохраняются и восстанавливаются правильно.
HTH, индифромоз