Как правильно сохранить viewmodel страницы для обработки надгробий - PullRequest
1 голос
/ 07 января 2011

Я создаю приложение WP7, и теперь я нахожусь на стадии обработки надгробной его части.

Что я делаю, это сохраняю модель представления страницы в пакете Page.Stateкогда происходит событие NavigatedFrom и происходит его чтение в NavigatedTo (с некоторой проверкой, чтобы определить, следует ли мне читать из сумки или читать из реальных данных приложения).

Сначала моя виртуальная машина была простообертка для модели домена

public string Nome
    {
        get
        {
            return _dm.Nome;
        }
        set
        {
            if (value != _dm.Nome)
            {
                _dm.Nome= value;
                NotifyPropertyChanged("Nome");
            }
        }
    }

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

Затем я изменил свойРеализация виртуальной машины - это просто копия свойств, которые мне нужны от DM:

public string Nome
    {
        get
        {
            return _nome;
        }
        set
        {
            if (value !=nome)
            {
                _nome= value;
                NotifyPropertyChanged("Nome");
            }
        }
    }

и с конструктором, который делает:

_nome = dm.Nome;

И теперь это работает, но я не былуверен, что это правильный подход.

Thx Simone

Ответы [ 3 ]

2 голосов
/ 07 января 2011

Любая информация переходного состояния должна быть сохранена в событии Application.Deactivation, а затем восстановлена ​​в событии Application.Activation для поддержки захоронения.

Если вам нужно что-то хранить между сеансами приложения, вы можете использовать приложениеЗакрытие события, но в зависимости от того, что вам нужно сохранить, вы можете просто сохранить его всякий раз, когда оно меняется.Опять же, в зависимости от того, что вам нужно сохранить, вы можете либо восстановить его в событии Application.Launching, либо просто прочитать его, когда вам это нужно.

Подход, который вы выберете, полностью зависит от требований вашего приложения иметод и место, где вы храните ваши данные, также зависит от вас (бинарная сериализация в изолированное хранилище, как правило, является самой быстрой).

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

1 голос
/ 08 января 2011

Приложение. Активировано / Деактивировано - хорошее место для обработки надгробий.

Узнайте, почему OnNavigatedTo / From может не соответствовать вашим потребностям.

Как правильно обрабатывать деактивацию и повторную активацию приложения - Блог Питера Торра

Обзор модели исполнения для Windows Phone

1 голос
/ 07 января 2011

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

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

...