Сериализация ВМ против класса состояния
После моих размышлений о регистрации событий (вы можете найти здесь 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();
}