如何实现“我需要保存吗?”数据容器的机制

本文关键字:数据 机制 保存 何实现 实现 | 更新日期: 2023-09-27 18:06:44

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

我现在想为此实现一个"我是否需要保存"机制。为了保存PersonManager, ui必须知道它是否被修改过。

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

这似乎容易出错。有什么好建议吗?

如何实现“我需要保存吗?”数据容器的机制

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

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