Как правильно сохранить ViewModel страницы для обработки надгробия
-
30-09-2019 - |
Вопрос
Я создаю приложение WP7, и я сейчас в точке обращения с надгробивной частью этого.
Что я делаю, это сохранение ViewModel страницы на странице .state Bag, когда происходит событие навигационного излучения, и чтение его обратно в навигации (с некоторой проверкой, чтобы обнаружить, следует ли я прочитать из сумки или прочитать из реальных данных приложения).
Сначала моя VM была просто оберткой к доменной модели
public string Nome
{
get
{
return _dm.Nome;
}
set
{
if (value != _dm.Nome)
{
_dm.Nome= value;
NotifyPropertyChanged("Nome");
}
}
}
Но это не всегда работало, потому что при сохранении до сумки, а затем чтение обратно, модель домена была не определена правильно.
Затем я изменил свою реализацию VM, чтобы быть только копией свойств, которые я нуждался в DM:
public string Nome
{
get
{
return _nome;
}
set
{
if (value !=nome)
{
_nome= value;
NotifyPropertyChanged("Nome");
}
}
}
и с конструктором, который делает:
_nome = dm.Nome;
И теперь это работает, но я не был уверен, что это правильный подход.
THX SIMONE.
Решение
Любая переходная информация о состоянии должна быть сохранена в случае применения. Работаемое событие, а затем восстановлено в приложении. Активированное событие для поддержки надгробия.
Если вам нужно хранить что-нибудь между сеансами приложений, вы можете использовать событие Application.Cluzing, но в зависимости от того, что вам нужно хранить, вы можете просто хранить его всякий раз, когда он меняется. Опять же, в зависимости от того, что вам нужно хранить, вы можете либо восстановить его в событии Application.lauching или просто прочитайте его, когда вам это нужно.
Подход, который вы берете полностью, зависит от требований вашей заявки и метод и местоположение, которое вы храните свои данные, также зависит от вас (двоичная сериализация для изолированного хранилища, как правило, принимается самым быстрым).
Я не знаю подробности вашего приложения, но сохранение и восстановление данных в навигации от / навигация вряд ли будет правильным местом для этого, если вы хотите реализовать поддержку для надгробия.
Другие советы
Я бы порекомендовал при создании копии части модели, так как при наличии надгробия, которую вы (вероятно) должны сохраняться как модель полного (уровня приложений), так и к копии уровня страницы при обращении с надгробием.
Опять таки Наиболее подходящим решением будет зависеть от сложности вашего приложения, а модели его используют.
Приложение. Активировано / деактивировано - это хорошее место для обработки надгробирования.
Посмотрите, почему onnavigatedto / from не может быть подходящим для ваших потребностей здесь.
Как правильно обрабатывать дезактивацию приложений и реактивацию - блог Питера Торр