Пока выглядит хорошо, но вы можете использовать List<Spaghetti>
вместо List<string>
и напрямую считывать элементы в этот список в ViewModel из базы данных. Итак, Модель на самом деле является шаблоном .
Правильно ли я вас понял? Ваш вопрос: зачем вам нужен класс Model при загрузке данных непосредственно в класс ViewModel?
Model на самом деле хранит данные и предоставляет данные для ViewModel . ViewModel - это logi c для View .
Если вам нужно больше данных для просмотра, чем может предоставить Модель , но Модель также не должна иметь и предоставлять вам ViewModel для данных Модель исключительно для View , но заполняйте его Данные из модели , которая заполняется, например, из базы данных SQL. В остальном то же самое. Если вам нужна только небольшая часть из всей модели для View , вы создаете ViewModel , которая имеет только Properties , необходимые для этого. цель.
Например, у вас есть TreeView , и вам нужно Свойство с именем «IsExpanded», чтобы контролировать это. Это Свойство не имеет ничего общего с чистыми Данными и, следовательно, не должно принадлежать самому классу Модель . Непуристик сказал бы, что все в порядке, но вы можете написать частичный класс для этой модели и игнорировать некоторые свойства, необходимые для просмотра, через атрибуты для базы данных.
Если вы показываете только Имя этого Модель пользователю достаточно было бы List of type string.
Так что прямого ответа нет. Вы можете предоставить свои данные напрямую через ViewModel или через другой ViewModel для класса Model с меньшим или большим количеством свойств, полей и т. Д. c.
После того, как они выберут спагетти, они go перейдут в следующее окно, где они смогут увидеть всю информацию о спагетти (например, свойства в модели). Могу ли я просто создать новую ViewModel с теми же свойствами и сделать то, что я сделал выше, или я заполняю модель, а затем заполняю ViewModel из нее?
Похоже, вам нужны те же свойства, которые хранятся в база данных для самого View . Вы можете загрузить все элементы напрямую и заполнить им список спагетти или просто заполнить строки, но загрузить необходимые данные для элемента, если они запрошены на следующей странице или где-то еще.
В общем, если вы получили много данных сказал бы:
Вы не должны загружать все данные из базы данных, загружайте только то, что вам нужно.
Думаю, это просто зависит от данных. Некоторые пуристы MVVM всегда говорят: создайте ViewModel для Model и загрузите и предоставьте только Data , необходимые в то время.
I Предлагаю вам прочитать это, надеюсь, это поможет. Если есть дополнительные вопросы, задавайте.
https://www.wintellect.com/model-view-viewmodel-mvvm-explained/