这些可能是我的实体关系:
1 Pupil has 1 Chair
1 Pupil has N Documents
1 Pupil has N Marks
1 Pupil has N IncidentReports
等...
因此,通过该示例,我从我的数据库中获得4个IEnumerable,将每个放入一个 的ObservableCollection。
现在我有4个不同的视图,每个视图都绑定到这4个集合中的一个。
让我们假设我在AdministrationController中删除了一个PupilViewModel,这是我唯一可以删除PupilViewModel的View。
现在我必须告知其他3个Controller及其ObservableCollections关于一个已删除的PupilViewModel以保持整个应用程序同步...这就是愚蠢的。
你对这种情况有什么好的建议吗?
AND 它变得更糟。如果我删除了一个学校班级,我必须同步所有学生 AND 文件或事件报告或标记......
答案 0 :(得分:0)
我建议使用Prism,Caliburn等框架中的EventAggregator
。关于这一点的有趣之处在于,您在每个ViewModel中注册对已知主题或对象的兴趣,并且当删除学生时,有兴趣了解更改的所有ViewModel可以更新(或同步)ObservableCollections
,因为pupil(或id)传递给所有听众。
另一个可能更多工作的替代方案是拥有一个模型对象,所有这些ViewModel共享一个实例。该模型负责更新它拥有的列表并提供它实现INotifyPropertyChanged
并将集合绑定到视图,然后视图将更新。