Поскольку я переношу голову вокруг mvvm вещи, представление является представлением, и viewmodel является 'модальным из представления', и модель объекты, с которыми мы имеем дело (или по крайней мере который является моим пониманием). Но я неясен относительно того, что и когда образцовые объекты заполняются. Так, например:
Позволяет говорят, что у меня есть приложение, которое должно создать новую запись в DB. И та запись должна иметь значения по умолчанию для запуска с. Кто ответственен за новую запись и получение значений по умолчанию. Это имеет какое-либо отношение к MVVM или что часть уровня доступа к данным? Кто называет viewmodel?
Или для существующих записей when\where записи получены? И сохраненный, если изменено?
Спасибо
Состояние и поведение вашего представления определяется в вашей вью-модели, что означает, что все события объявляются здесь.
Кто вызывает вью-модель? Это зависит от того, кому она нужна. Вы можете вызвать ее в вашем представлении.
Для существующих записей когда\где извлекаются записи? И сохраняются, если изменены? Часть сохранения и извлечения находится в вашей модели представления.
Для подробного объяснения посетите этот сайт.
В чрезмерно упрощенном ответе ваша ViewModel должна содержать ЛОГИКУ для управления тем, что отображает ваше представление, а также как разрешено взаимодействовать с Моделью или Данными.
Такие события, как получение данных, сохранение и удаление, перехватываются с помощью механизма команд и помещаются в ViewModel, где они могут быть протестированы. Обработка «грязных» событий также является обязанностью ViewModel.Что касается того, кто вызывает модель представления, вы поручаете вызов механизмам привязки, доступным в WPF и Silverlight.
В модели ViewModel все еще нужно придерживаться лучших практик и гарантировать, что у вас есть уровень DataAccess, абстрагирующий ваш источник данных и, возможно, с использованием шаблона репозитория для абстрагирования.
Жизненный цикл ViewModel может быть таким же простым, как следующее ...
Однако, поскольку у вас, вероятно, будет много движущихся частей внутри Ctor виртуальной машины, включая интерфейс репозиториев данных, вы, вероятно, захотите работать с IoC. Это приблизит жизненный цикл ViewModel к ...
Это может показаться дополнительным шагом, однако с контейнером IoC вы на самом деле просто вызывают один метод, такой как IoC.Get (), а остальные шаги подключаются автоматически на основе применяемых соглашений.
Я использую модели представлений для управления загрузкой (со значениями по умолчанию) и сохранением моих моделей, а также для создания коллекций и объектов, которые я использую для привязки к своим представлениям. Это включает установку значений по умолчанию для моих моделей.