如何为数据容器实现“我是否需要保存”机制?

时间:2011-08-27 19:28:25

标签: c# events savechanges

假设有BindingList<Person{Name, age}>类和PersonManager类来承载列表。 在应用程序中,每个控件都与人员列表有关,以便操作或更新。例如。包含人员姓名的列表框,更新所选人员年龄的控件等。

我现在想要为此实现“我需要保存”机制。不知何故,ui必须知道是否已更改PersonManager才能保存它。

我的目的是捕获Person实现的INotifyPropertyChanged事件,并在PersonManager中创建一个在引发propertyChangedEvent时触发的事件。 像事件转发机制一样。

这似乎容易出错。有关如何使其更好的任何建议?

1 个答案:

答案 0 :(得分:1)

如果BindingList中的项实现了INotifyPropertyChanged,那么当PropertyChanged事件之一触发时,BindingList的ListChanged事件将被触发。

因此,您只需在PersonManager中处理BindingList的ListChanged事件,并在PersonManager中设置脏布尔标志(脏是陈旧或未保存数据的典型指示符)。然后,应用程序可以询问PersonManager是否有任何数据是脏的。当应用程序保存数据时,它会告诉PersonManager重置脏标志。如果PersonManager也处理数据保存,那么它可以重置自己的标志。

希望这有帮助。