C# 我如何实施一个;我需要保存吗;数据容器的机制?

C# 我如何实施一个;我需要保存吗;数据容器的机制?,c#,events,savechanges,C#,Events,Savechanges,假设有一个BindingList类和一个PersonManager类托管该列表。 在应用程序中,每个控件都绑定到人员列表,以便对其进行操作或进行更新。例如,包含人员姓名的列表框、更新所选人员年龄的控件等 我现在想为这个实现一个“我需要保存吗”机制。不知何故,ui必须知道PersonManager是否已更改才能保存它 我的想法是捕获Person实现的INotifyPropertyChanged事件,并在PersonManager中创建一个在引发propertyChangedEvent时触发的事件。

假设有一个
BindingList
类和一个
PersonManager
类托管该列表。 在应用程序中,每个控件都绑定到人员列表,以便对其进行操作或进行更新。例如,包含人员姓名的列表框、更新所选人员年龄的控件等

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

我的想法是捕获Person实现的
INotifyPropertyChanged
事件,并在PersonManager中创建一个在引发propertyChangedEvent时触发的事件。 类似事件转发机制的东西


这似乎容易出错。有没有关于如何改进的建议

如果BindingList中的项实现INotifyPropertyChanged,则当其中一个项PropertyChanged事件激发时,BindingList的ListChanged事件将激发

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

希望这有帮助