如何使用ViewModel处理删除模型并保持同步?

时间:2010-12-23 18:40:45

标签: wpf sqlite mvvm models

这些可能是我的实体关系:

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 文件或事件报告或标记......

1 个答案:

答案 0 :(得分:0)

我建议使用Prism,Caliburn等框架中的EventAggregator。关于这一点的有趣之处在于,您在每个ViewModel中注册对已知主题或对象的兴趣,并且当删除学生时,有兴趣了解更改的所有ViewModel可以更新(或同步)ObservableCollections,因为pupil(或id)传递给所有听众。

另一个可能更多工作的替代方案是拥有一个模型对象,所有这些ViewModel共享一个实例。该模型负责更新它拥有的列表并提供它实现INotifyPropertyChanged并将集合绑定到视图,然后视图将更新。