2010-10-11 4 views
2

Я пытаюсь сбросить данные в моем объекте, связанном с простой формой (некоторые текстовые поля и несколько кнопок).WPF привязка к объектам

У меня есть 2 объекта, которые были созданы отдельно, но имеют одинаковую информацию. Объект 1 привязан к форме с использованием DataBinding. Объект 2 должен иметь возможность сбросить объект 1 до исходных значений. Всякий раз, когда пользователь редактирует данные, все в порядке, а Object 1 обновляется новыми значениями, а Object 2 остается неизменным. У меня возникли проблемы с сценарием, когда пользователь редактирует некоторые данные, а затем нажимает кнопку сброса, который вызывает код, который выглядит следующим образом:

Object1 = Object2 

Значения получить сброс, но теперь, когда пользователь снова редактирует данные, как и Object1 Значения Object2 обновляются. И я не могу сбрасывать больше.

Как сбросить значения Object1 без возможности одновременного обновления Object2? И может ли кто-нибудь объяснить, почему Object2 становится обновляемым после сброса?

спасибо.

ответ

2

Когда вы говорите Object1 = Object2, вы просто указываете Object1 на то место, где указывает объект 2. Они используют одну и ту же ссылку, и поэтому оба они обновляются в одно время.

Мое предложение было бы сделать глубокий клон. Я не знаю сложности ваших занятий. Этот код был очень удобен для меня.

http://www.codeproject.com/KB/tips/SerializedObjectCloner.aspx

Поэтому, когда вы сбрасываете Object1, создать глубокий клонированный объект, проходящий в Object2 и назначить что Object1.

+0

Вот что я подумал, просто нужно подтвердить. И DeepClone работает отлично. Есть ли проблемы с производительностью при использовании DeepClone, о котором вы знаете? Спасибо за помощь. – chiefanov

+0

Ну, вы в основном сериализуете источник и десериализуете, так что теоретически, чем тяжелее объект, эта операция займет больше времени. Я играл с ним, используя TypedDataSet Structures с несколькими таблицами и связанными данными без заметной потери производительности. – SKG

+0

Звучит хорошо. Я поиграю с этим. У меня нет сумасшедших больших объектов, поэтому он не должен сильно влиять на производительность. – chiefanov

1

Object2 привязывается, поскольку Object1 теперь является просто ссылкой на Object2. чтобы избежать этого, попробуйте копировать только свойства Object2 в Object1 или определить способ клонирования Object2, а затем назначить клон Object1.

Смежные вопросы