3

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

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

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

这似乎容易出错。关于如何使它变得更好的任何建议?

4

1 回答 1

1

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

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

希望这可以帮助。

于 2011-11-03T14:24:04.207 回答