Я работаю над проектом WPF и реализовал очень простой способ отменить один уровень изменений, который хорошо работает во всем проекте, за исключением одного случая, когда изменения в свойстве объекта отражаются в MemberwiseClone.WPF Binding & MemberwiseClone Problems
Что я делаю - это делать объект MemberwiseClone в моем объекте перед добавлением или редактированием свойств в этом объекте, а затем, если пользователь хочет отменить, я копирую каждое свойство из объекта MemberwiseClone обратно в текущий объект.
Поскольку я использую привязку WPF, использование MemberwiseClone привлекательно для меня, потому что до сих пор любые изменения, внесенные в свойство, не отражались в MemberwiseClone. На этот раз у меня есть свойство в моем объекте, которое является ObservableCollection другого объекта, и что происходит, если я добавлю элемент в ObservableCollection, он также добавится к объекту, созданному элементом MemberwiseClone, и я никогда не смогу действительно отменить.
Есть ли способ обойти это? Любые мысли, которые могут возникнуть по этому поводу, приветствуются.
Спасибо.
Я работаю с методом расширения в ссылке, однако я получаю следующее исключение: введите «System.ComponentModel.PropertyChangedEventManager» в сборке «WindowsBase, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'не помечено как сериализуемое. Любые мысли? Я пометил все мои классы как Serializable. – MikeMalter
Вы должны использовать атрибут [Serializable] в своем классе с ObservableCollection. См. [Базовая сериализация] (http://msdn.microsoft.com/en-us/library/4abbf6k0%28v=vs.100%29.aspx) для примера. – LPL
Посмотрите на [этот пост] (http://stackoverflow.com/a/8879533/620360) тоже. – LPL