如何恢复ObservableCollection的更改值?

时间:2010-12-18 15:18:27

标签: c# list observablecollection xamdatagrid

我有一个ObservableCollection<T>的课程。

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 个答案:

答案 0 :(得分:1)

您的问题是只存在Person类的一个副本,而这可能包含在两个集合(主集合和ObservableCollection)中。

因此,当您将集合中的项目添加到ObservableCollection时,它们将指向相同的对象。因此,当您编辑对象时,它们将在两个集合中进行更改。

解决方案是首先克隆Person个对象,然后将克隆添加到ObservableCollection