Должен ли мой ViewModel иметь ObservableCollection видов или ViewModel? - PullRequest
11 голосов
/ 08 июня 2009

Я пытаюсь понять базовый подход к проектированию MVVM при использовании ItemsControl , привязав его через DataTemplates к ObservableCollections в ViewModel.

Я видел примеры, которые связываются с ObservableCollections строк , Views и ViewModels .

Привязка к строкам, по-видимому, только для demos , это привязка к " ViewModels, которые содержат коллекции представлений, которые содержат коллекции ViewModels ", которые, по-видимому, проявляются в силе WPF. действительно выходи.

Для тех, кто использует опытный в шаблоне MVVM, каков ваш стандартный подход для привязки ItemsControl, ListView, ListBox к коллекциям в ViewModel? Мне нужен такой опыт:

  • всегда используйте ObservableCollection <...> и никогда не используйте List <...>, потому что ...
  • что-то лучше, чем ItemsControl для отображения коллекции ...
  • для того, чтобы фильтрация работала в ViewModel вместо кода, используйте ...
  • использовать коллекции Views, когда ... и коллекции ViewModels, когда ...
  • 90% времени я создаю ItemsControl и привязываю его к ObservableCollection видов, которые имеют свои собственные ViewModels ...

Ответы [ 3 ]

10 голосов
/ 10 июня 2009

Я бы использовал ObservableCollection ViewModels по следующим причинам:

  • ObservableCollection уже имеет события, доступные для сигнализации, когда она была изменена (например, когда элементы добавляются / удаляются из коллекции).
  • Мы находимся в ViewModel 'layer', поэтому он обеспечивает более четкое разделение, чтобы ViewModel содержала коллекцию ViewModel, а не Views
  • Если необходимо изменить или получить данные от элементов в коллекции, вы можете более легко изменить / получить доступ к этим данным, если элементы являются ViewModels (если они являются представлениями, вы часто будете приводить DataContext представления или получать доступ к его пользовательскому интерфейсу). элементы).
1 голос
/ 30 июня 2009

У меня тот же вопрос, но замените «вид» на «модель». :)

У меня есть МОДЕЛЬ с коллекцией других моделей. Я хочу, чтобы у моей модели представления была наблюдаемая коллекция других моделей представления, но как только я создаю ее экземпляр, связь между содержимым коллекции моделей теряется. Теперь мне нужно начать связывать все события из наблюдаемой коллекции viewmodels обратно в коллекцию моделей?

1 голос
/ 08 июня 2009

Мне нравится использовать ObservableCollection ViewModels. Представление, которое связывается с коллекцией, может определять DataTemplate, который придает ViewModel свой внешний вид. Это приводит к меньшей связи между компонентами.

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