Сериализация ВМ против класса состояния

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

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

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

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

С уважением SkyG

1 ответ

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();  
}   
Другие вопросы по тегам