MVVM, где находится код для загрузки данных? - PullRequest
5 голосов
/ 21 мая 2010

Когда я обнимаю mvvm, представление - это представление, а модель представления - это «модал представления», а модель - это сущности, с которыми мы имеем дело (или, по крайней мере, это мое понимание). Но мне неясно, что и когда будут заполнены модельные объекты. Так, например:

Допустим, у меня есть приложение, которое должно создать новую запись в БД. И эта запись должна иметь значения по умолчанию для начала. Кто отвечает за новую запись и получение значений по умолчанию. Это как-то связано с MVVM или это часть уровня доступа к данным? Кто называет модель представления?

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

Спасибо

Ответы [ 3 ]

4 голосов
/ 22 мая 2010

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

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

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

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

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

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

  1. View / ViewModel (Зависит, если вы сначала View или ViewModel) извлекается из IoC
  2. IoC Обрабатывает сопряжение View-ViewModel (на основе конвенции)
  3. Хранилище данных внедряется в ViewModel
  4. Метод GetData, вызываемый ViewModel Ctor
  5. Данные получены и переданы в существующее свойство ObservableCollection с привязкой к данным

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

0 голосов
/ 21 мая 2010

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

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

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

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

0 голосов
/ 21 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...