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