Каковы самые большие болевые точки с шаблоном ViewModel? - PullRequest
3 голосов
/ 05 мая 2009

Гленн Блок и я работаем вместе над шаблоном ViewModel. Мы пытались выявить самые большие болевые точки, связанные с шаблоном, с целью добавления поддержки структуры для облегчения боли.

Сегодня вечером, Гленн написал, «Просмотр модели» - фильм, отдавший свой голос . Ждем вашего ответа. Пожалуйста, опубликуйте здесь (и проголосуйте) о том, какие самые большие проблемы возникают при реализации шаблона ViewModel (также известного как Model-View-ViewModel или MVVM). Расскажите нам, как рамки могут сделать вашу жизнь проще!

Мы смотрим как на WPF, так и на Silverlight.

Итак, скажите нам, что вы хотите, чтобы фреймворк облегчил ViewModel?

Ответы [ 4 ]

5 голосов
/ 05 мая 2009
  • Взрыв объекта (теперь у нас есть и модель, и модель представления).
  • Отображение модели на модель представления и наоборот.

Я думаю, что оба являются необходимым злом, но они - болевые точки.

4 голосов
/ 02 июля 2009

Коллекции.

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

Я могу создать ObservableCollection<TViewModel> в своем слое ViewModel и вручную заполнить его ViewModel для каждого элемента в коллекции уровня модели. Это прекрасно работает - когда программа запускается. Но что происходит, когда пользователь нажимает кнопку «Добавить»? Или кнопка Удалить? Или двигаться вверх / вниз? И т.д.

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

1 голос
/ 18 сентября 2009

INotifyCollectionChanged поддерживает уведомление о диапазоне изменений, но все элементы управления коллекцией WPF не поддерживают исключение, когда вы пытаетесь опубликовать обновление диапазона. Это означает, что если вы добавите 10 элементов в контейнер, макет будет переоценен 10 раз, что довольно медленно для сложных элементов управления!

Решением будет добавление методов SuspendNotifocations и ResumeNotifications в коллекцию Observable и информирование всех элементов управления WPF об обновлениях диапазона (сценарий использования: приостановить, добавить элементы, возобновить, все элементы отображаются одновременно).

0 голосов
/ 13 июня 2009

Слишком много свойств для создания в классе ViewModel. По крайней мере, что я видел, для каждого свойства элемента пользовательского интерфейса, к которому вы хотите получить доступ / связать, вам нужно создать свойство во ViewModel, которое слишком много кода для обслуживания.

...