有没有订阅INotifyPropertyChanged的集合?
问题描述:
我有一个班级,使用INotifyPropertyChanged
并有一个列表绑定到网格。每次对象更改时,都会更新网格中的值。然而由于历史原因,我想将该对象添加到集合/列表并绑定到历史网格以显示所有更改。然而,我尝试过的每个列表似乎都订阅了INotifyPropertyChanged
,所以我只能在我的历史记录网格中获得相同数量的项目。有没有订阅INotifyPropertyChanged的集合?
有没有订阅INotifyPropertyChanged
的列表/集合?
感谢
答
如果您的列表是对类的引用列表,则需要对整个列表执行“深层克隆”以维护历史副本。否则,列表内容的副本仍然是对正在变更的“实时”对象的引用。这样做将需要的代码,如:
// This requires a way to "Clone" your object...
List<YourClass> listCopy = originalList.Select(item => item.Clone()).ToList();
如果列表中包含的值类型(结构),你可以创建一个新的List<YourType>
并复制原始的元素上。
// If your type is a value type, you can just copy the list directly...
var listCopy = originalList.ToList();
另外 - 这与INotifyPropertyChanged
无关。列表本身与PropertyChanged
事件无关。
很难理解你在这里说的究竟是什么。就我所知,列表本身不绑定到INotifyPropertyChanged。你能给一些示例代码吗? – 2011-01-31 16:52:34
我不是100%确定我遵循你想要的,但是如果你想要绑定列表的旧版本,那么为什么不在你希望记录历史的时间克隆呢? – Chris 2011-01-31 16:52:57