我有一個班級,使用INotifyPropertyChanged
並有一個列表綁定到網格。每次對象更改時,都會更新網格中的值。然而由於歷史原因,我想將該對象添加到集合/列表並綁定到歷史網格以顯示所有更改。然而,我嘗試過的每個列表似乎都訂閱了INotifyPropertyChanged
,所以我只能在我的歷史記錄網格中獲得相同數量的項目。有沒有訂閱INotifyPropertyChanged的集合?
有沒有訂閱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
事件無關。
考慮您的使用結合Mode=OneTime
。 http://msdn.microsoft.com/en-us/magazine/cc163299.aspx#S3
很難理解你在這裏說的究竟是什麼。就我所知,列表本身不綁定到INotifyPropertyChanged。你能給一些示例代碼嗎? – 2011-01-31 16:52:34
我不是100%確定我遵循你想要的,但是如果你想要綁定列表的舊版本,那麼爲什麼不在你希望記錄歷史的時間克隆呢? – Chris 2011-01-31 16:52:57