2010-12-18 65 views
2

我有一個類ObservableCollection<T>如何恢復ObservableCollection的更改值?

class person 
{ 
    string name; 
    string age; 
} 

我也有一個List<T>。我從XML集合中獲取數據以及XML中的列表。

listVAR.add (new person(xml.name.value,xml.age.value)); 
collectionVAR(new person(xml.name.value,xml.age.value)); 

現在我修改集合中的數據。有一個senario我必須恢復舊值,但是當我添加它們時,首先清除收集,舊值會反映出來。例如:

通過XamDataGrid將年齡由35改爲45。現在我的清單的值爲35.

collectionVAR.clear(); 

foreach(people item in listVAR) 
{ 
    collectionVAR.add(item); 
} 

但在這裏我看到值35未恢復。任何人都可以向我解釋爲什麼?

回答

1

您的問題是隻有Person類的一個副本存在,而這可能包含在兩個集合(主集合和ObservableCollection)中。

因此,當您將集合中的項目添加到ObservableCollection,時,它們將指向相同的對象。所以當你編輯對象時,它們將在兩個集合中被更改。

解決方法是首先克隆Person對象,然後將該克隆添加到ObservableCollection