Сериализация ВМ против класса состояния - PullRequest
1 голос
/ 09 февраля 2012

После моих размышлений о регистрации событий (вы можете найти здесь Регистрация событий ViewModel и ViewModel Lifetime ), теперь я думаю о надгробии Viewmodel:

В случае Tombstoning хороший ли подход - сериализация ViewModel? Я имею в виду случай, когда разные модели представления имеют ссылку на один и тот же класс. В случае сериализации и десериализации Viewmodels экземпляр класса, на который ссылаются, мог иметь дублированный экземпляр, не так ли?

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

Любой опыт по этому вопросу приветствуется.

С уважением SkyG

1 Ответ

1 голос
/ 09 февраля 2012

Caliburn Micro имеет много встроенного в фреймворк, что позволяет сохранять свойства модели представления или всего графика как в состоянии телефона, так и в настройках приложения.Вам просто нужно создать класс и наследовать от StorageHandler.

public class PivotPageModelStorage : StorageHandler<PivotPageViewModel> 
{  
    public override void Configure() 
    {  
        this.ActiveItemIndex().InPhoneState().RestoreAfterViewLoad();  
    }  
}  

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

public void GotoPageTwo() 
{  
    navigationService.UriFor<PivotPageViewModel>().WithParam(x => x.NumberOfTabs, 5).Navigate();  
}   
...