Я распознаю проблему как распространенную дилемму в MVVM.Я могу смотреть на это с двух сторон.
Подход A)
В разделении View, Model и ViewModel то, что вы описываете , находится в Model .Вы пишете, например, что это нужно хранить.Это не означает, что это та же часть модели, что и другие данные модели.
Рассмотрим следующее разделение:
- FolderModel - модель содержимого или свойств папки.
- TreeNodeModel - модель выбора пользователей при изучении древовидного представления.
Возможно, разделение не так просто, но дело в том, что MVVM не предназначен для того, чтобы заставить вассобирать все в одном месте, и я не думаю, что MVVM не позволяет вам хранить модели для взаимодействия с пользователем, так же, как вы храните модели для содержимого данных. Microsoft пишет:
Данные могут поступать из базы данных, веб-службы, именованного канала, файла на диске или даже почтовых голубей: это просто не имеет значения.
Почему данные для модели данных не должны быть в состоянии взаимодействовать с пользователем?:)
Подход B)
Мой обычный подход к этим дилеммам , однако, заключается в том, что свойства, подобные IsExpanded
, по большей части не нужно хранить между сессиями.Таким образом, свойства в ViewModel, со значением по умолчанию вместо сохраненного значения, достаточно.:)
И если его нужно сохранить, его не нужно хранить в модели.ViewModel для логики для представления данных модели.Если ViewModel хочет сохранить свое логическое состояние, то не нужно хранить в модели .
Сводка
На мой взгляд, вы можете сохранить еголюбой из этих способов без нарушения шаблона MVVM.