假设有BindingList<Person{Name, age}>
类和PersonManager
类来承载列表。
在应用程序中,每个控件都与人员列表有关,以便操作或更新。例如。包含人员姓名的列表框,更新所选人员年龄的控件等。
我现在想要为此实现“我需要保存”机制。不知何故,ui必须知道是否已更改PersonManager才能保存它。
我的目的是捕获Person实现的INotifyPropertyChanged
事件,并在PersonManager中创建一个在引发propertyChangedEvent时触发的事件。
像事件转发机制一样。
这似乎容易出错。有关如何使其更好的任何建议?
答案 0 :(得分:1)
如果BindingList中的项实现了INotifyPropertyChanged,那么当PropertyChanged事件之一触发时,BindingList的ListChanged事件将被触发。
因此,您只需在PersonManager中处理BindingList的ListChanged事件,并在PersonManager中设置脏布尔标志(脏是陈旧或未保存数据的典型指示符)。然后,应用程序可以询问PersonManager是否有任何数据是脏的。当应用程序保存数据时,它会告诉PersonManager重置脏标志。如果PersonManager也处理数据保存,那么它可以重置自己的标志。
希望这有帮助。