WPF Binding& MemberwiseClone问题

时间:2012-05-04 18:12:43

标签: wpf binding clone observablecollection

我正在开发一个WPF项目并且实现了一种非常简单的方法来撤消一个级别的更改,这在整个项目中运行良好,除了一个对象属性的更改在MemberwiseClone中反映的情况。

我正在做的是在添加或编辑该对象中的属性之前在我的对象中执行MemberwiseClone,然后如果用户想要撤消,我将每个属性从MemberwiseClone对象复制回我当前的对象。

因为我正在使用WPF绑定,所以使用MemberwiseClone对我很有吸引力,因为到目前为止,在属性中所做的任何更改都没有反映在MemberwiseClone中。这次我在我的对象中有一个属性,它是另一个对象的ObservableCollection,正在发生的事情是,如果我将一个项添加到ObservableCollection,它也会被添加到由MemberwiseClone创建的对象中,我永远无法真正撤消。 / p>

这有什么办法吗?欢迎您对此提出任何想法。

感谢。

1 个答案:

答案 0 :(得分:1)

根据Object.MemberwiseClone RemarksObservableCollection中的对象引用将被复制,但不会复制引用的对象本身。因此,撤消集合引用相同的可能更改的对象。

你需要一份深刻的副本,而不是浅薄的副本。看看How do you do a deep copy an object in .Net (C# specifically)?