Как правильно сохранить ViewModel страницы для обработки надгробия

StackOverflow https://stackoverflow.com/questions/4624527

Вопрос

Я создаю приложение 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 не может быть подходящим для ваших потребностей здесь.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top