MVVM, где делает код для загрузки данных, принадлежат?

Поскольку я переношу голову вокруг mvvm вещи, представление является представлением, и viewmodel является 'модальным из представления', и модель объекты, с которыми мы имеем дело (или по крайней мере который является моим пониманием). Но я неясен относительно того, что и когда образцовые объекты заполняются. Так, например:

Позволяет говорят, что у меня есть приложение, которое должно создать новую запись в DB. И та запись должна иметь значения по умолчанию для запуска с. Кто ответственен за новую запись и получение значений по умолчанию. Это имеет какое-либо отношение к MVVM или что часть уровня доступа к данным? Кто называет viewmodel?

Или для существующих записей when\where записи получены? И сохраненный, если изменено?

Спасибо

5
задан cody 21 May 2010 в 04:23
поделиться

3 ответа

Состояние и поведение вашего представления определяется в вашей вью-модели, что означает, что все события объявляются здесь.

Кто вызывает вью-модель? Это зависит от того, кому она нужна. Вы можете вызвать ее в вашем представлении.

Для существующих записей когда\где извлекаются записи? И сохраняются, если изменены? Часть сохранения и извлечения находится в вашей модели представления.

Для подробного объяснения посетите этот сайт.

0
ответ дан 14 December 2019 в 19:04
поделиться

В чрезмерно упрощенном ответе ваша ViewModel должна содержать ЛОГИКУ для управления тем, что отображает ваше представление, а также как разрешено взаимодействовать с Моделью или Данными.

Такие события, как получение данных, сохранение и удаление, перехватываются с помощью механизма команд и помещаются в ViewModel, где они могут быть протестированы. Обработка «грязных» событий также является обязанностью ViewModel.Что касается того, кто вызывает модель представления, вы поручаете вызов механизмам привязки, доступным в WPF и Silverlight.

В модели ViewModel все еще нужно придерживаться лучших практик и гарантировать, что у вас есть уровень DataAccess, абстрагирующий ваш источник данных и, возможно, с использованием шаблона репозитория для абстрагирования.

Жизненный цикл ViewModel может быть таким же простым, как следующее ...

  1. Конструктор, вызываемый View
  2. Метод GetData, вызываемый ViewModel Ctor
  3. Данные получены и помещены в существующее свойство ObservableCollection привязки данных View

Однако, поскольку у вас, вероятно, будет много движущихся частей внутри Ctor виртуальной машины, включая интерфейс репозиториев данных, вы, вероятно, захотите работать с IoC. Это приблизит жизненный цикл ViewModel к ...

  1. View / ViewModel (в зависимости от того, используете ли вы сначала View или ViewModel) извлекается из IoC
  2. IoC Управляет объединением View-ViewModel (Соглашение на основе)
  3. Репозиторий данных вводится в ViewModel
  4. Метод GetData, вызываемый ViewModel Ctor
  5. Данные получены и помещены в существующее свойство ObservableCollection привязки данных View

Это может показаться дополнительным шагом, однако с контейнером IoC вы на самом деле просто вызывают один метод, такой как IoC.Get (), а остальные шаги подключаются автоматически на основе применяемых соглашений.

5
ответ дан 14 December 2019 в 19:04
поделиться

Я использую модели представлений для управления загрузкой (со значениями по умолчанию) и сохранением моих моделей, а также для создания коллекций и объектов, которые я использую для привязки к своим представлениям. Это включает установку значений по умолчанию для моих моделей.

0
ответ дан 14 December 2019 в 19:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: