2

我有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));

现在我修改集合中的数据。有一个场景,我必须恢复旧值,但是当我添加它们时,先清除集合,旧值就会反映。例如:

年龄从 35 岁变为 45 岁XamDataGrid。现在我的列表值为 35。

collectionVAR.clear();

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

但在这里我看到值 35 没有恢复。谁能向我解释为什么?

4

1 回答 1

1

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

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

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

于 2010-12-18T15:43:40.710 回答