Как структурировать MVVM с коллекциями?

Мне сложно понять, как применять шаблон MVVM, когда задействованы списки / коллекции.

Скажите MainModel имеет несколько свойств и методов, а также список, содержащий другие объекты DetailModel . Объекты DetailModel могут быть добавлены, удалены или переупорядочены.

MainView покажет несколько элементов управления, связанных с корневой моделью, и будет иметь ListBox заполняется из списка. У каждого элемента будет свое собственное представление через DetailModelView UserControl .

Наконец, есть MainViewModel . Это имеет свойства, поддерживаемые свойствами и методами MainModel , привязанными к основному представлению, с уведомлением об изменении, сохраняющим все в синхронизации. (До этого момента я вполне доволен шаблоном - уточняю, если я упускаю что-то фундаментальное ...)

Когда дело доходит до обработки списка, я запутываюсь. Я встречал несколько примеров, когда MainViewModel просто предоставляет список DetailModels представлению, а DetailModelViews привязаны непосредственно к моделям. Это функционирует , но проблематично. Он не всегда следует шаблону ( DetailViewModel не существует), и это побуждает меня включать некоторый связанный с пользовательским интерфейсом код в мои подробные модели. Мне кажется очевидным, что MainViewModel должен предоставлять список DetailViewModels для привязки UI, но я застрял в том, как реализовать такую ​​вещь!

Как следует управлять два списка ( DetailModels и DetailViewModels )? Я действительно запутался в том, где я изначально заполняю список DetailViewModel , и как мне следует обрабатывать добавление, удаление или изменение порядка элементов для их синхронизации!

23
задан bolov 9 July 2018 в 14:08
поделиться