2011-08-27 63 views
3

假设有BindingList<Person{Name, age}>类和PersonManager类承载列表。 在应用程序中,每个控件都会出现在人员列表中,以便操作或更新。例如。一个列表框,其中包含人员名称,一个更新选定人员年龄的控件等。如何为数据容器实现“我需要保存”机制?

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

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

这似乎很容易出错。有关如何改善它的任何建议?

回答

1

如果BindingList中的项目实现INotifyPropertyChanged,那么BindingList的ListChanged事件将在其中一个项目PropertyChanged事件触发时触发。

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

希望这会有所帮助。

相关问题