gpt4 book ai didi

c# - 如何恢复 ObservableCollection 的更改值?

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:19 26 4
gpt4 key购买 nike

我有一个 ObservableCollection<T>一个类(class)。

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

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

通过 XamDataGrid 将集合中的年龄从 35 岁更改为 45 岁.现在我的列表的值为 35。

collectionVAR.clear();

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

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

最佳答案

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

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

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

关于c# - 如何恢复 ObservableCollection 的更改值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4478621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com