Мне сложно понять, как применять шаблон MVVM, когда задействованы списки / коллекции.
Скажите MainModel
имеет несколько свойств и методов, а также список, содержащий другие объекты DetailModel
. Объекты DetailModel
могут быть добавлены, удалены или переупорядочены.
MainView
покажет несколько элементов управления, связанных с корневой моделью, и будет иметь ListBox
заполняется из списка. У каждого элемента будет свое собственное представление через DetailModelView
UserControl
.
Наконец, есть MainViewModel
. Это имеет свойства, поддерживаемые свойствами и методами MainModel
, привязанными к основному представлению, с уведомлением об изменении, сохраняющим все в синхронизации. (До этого момента я вполне доволен шаблоном - уточняю, если я упускаю что-то фундаментальное ...)
Когда дело доходит до обработки списка, я запутываюсь. Я встречал несколько примеров, когда MainViewModel
просто предоставляет список DetailModels
представлению, а DetailModelViews
привязаны непосредственно к моделям. Это функционирует , но проблематично. Он не всегда следует шаблону ( DetailViewModel
не существует), и это побуждает меня включать некоторый связанный с пользовательским интерфейсом код в мои подробные модели. Мне кажется очевидным, что MainViewModel
должен предоставлять список DetailViewModels
для привязки UI, но я застрял в том, как реализовать такую вещь!
Как следует управлять два списка ( DetailModels
и DetailViewModels
)? Я действительно запутался в том, где я изначально заполняю список DetailViewModel
, и как мне следует обрабатывать добавление, удаление или изменение порядка элементов для их синхронизации!