我不太明白在涉及列表/集合时如何应用MVVM模式。
假设MainModel
有几个属性和方法,以及一个包含其他DetailModel
对象的列表。 DetailModel
对象可以添加、删除或重新排序。
MainView
将显示与根模型相关的几个控件,并从列表中填充ListBox
。每个项目都将通过DetailModelView
UserControl
拥有自己的子视图。
最后,有一个MainViewModel
。这具有由MainModel
的属性和方法支持的属性,绑定到主视图,并使用更改通知保持所有内容同步(到此为止,我对该模式感到满意 - 只是说明除非我缺少了某些基本东西...)
当涉及处理列表时,我会感到困惑。我已经遇到过几个例子,其中MainViewModel
仅将DetailModels
列表公开给视图,DetailModelViews
直接绑定到模型。 这是可行的,但存在问题。 它不一致地遵循该模式(没有DetailViewModel
),并且它迫使我在我的详细模型中包含一些与UI相关的代码。 对我来说很清楚,MainViewModel
应该公开一个DetailViewModels
列表供UI绑定,但是我不知道如何实现这样一件事!
如何管理两个列表(DetailModels
和DetailViewModels
)? 我真的不知道初始填充DetailViewModel
列表的位置以及如何处理添加、删除或更改项目顺序以保持它们同步!