我有一个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没有恢复。任何人都可以向我解释原因吗?
答案 0 :(得分:1)
您的问题是只存在Person
类的一个副本,而这可能包含在两个集合(主集合和ObservableCollection
)中。
因此,当您将集合中的项目添加到ObservableCollection
时,它们将指向相同的对象。因此,当您编辑对象时,它们将在两个集合中进行更改。
解决方案是首先克隆Person
个对象,然后将克隆添加到ObservableCollection
。