【问题标题】:How can I restore the changed value of an ObservableCollection?如何恢复 ObservableCollection 的更改值?
【发布时间】:2010-12-18 15:18:26
【问题描述】:

我有一个班级的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));

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

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

collectionVAR.clear();

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

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

【问题讨论】:

    标签: c# list observablecollection xamdatagrid


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      相关资源
      最近更新 更多