2010-12-18 69 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