2013-06-07 4 views
4

Я видел, что WPF имеет свойство UpdateSourceTrigger, которое позволит привязывать данные после того, как элемент управления потерял фокус, есть ли что-то подобное для winforms?Обновление привязки данных к потерянному фокусу

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

Это вызывает у меня проблему, поскольку у меня есть CheckBox, что при изменении состояния проверки обновляется другой источник, который имеет привязку данных от одного источника данных привязки, что делает мой флажок никогда не меняющим значение (или, вернее, он меняет его обратно)

Я создал example program, который демонстрирует это. (Базовая форма с флажком и текстовым полем)

В качестве альтернативы, есть ли другой способ обработки привязки данных, чтобы изменить значение свойства привязки данных вместо источника?

+0

Я плохо понимаю, что вы хотите. Связывание данных должно связывать данные между элементом управления и источником. Вы хотите изменить какое-то значение в элементе управления без изменения источника? Какой-то конкретный пример был бы приятным. –

+0

@King King, ссылка дает полный пример. В примере в строке 8 вы видите, что он вызывает «Текст» (текст переопределяется), что в конечном итоге изменяет значение базы данных текстового поля, которое в результате сбрасывает флажок в значение источника и, таким образом, никогда не позволяет флажку другое значение – Sayse

+0

Связывание @sayse winforms смешно по сравнению с WPF. Я не думаю, что вы сможете достичь этого, не прибегая к подклассу текстового поля или тому подобного. –

ответ

2

В конце концов мне пришлось вручную обновить привязку данных с помощью события CheckedChanged.

Например, используя источник для моей примерной программы.

checkBox1.CheckedChanged += (s, e) => { 
    dc.BooleanVal = ((CheckBox)s).checked; 
    customControl1.Text = "3"; 
    label1.Text = dc.BooleanVal.ToString(); }; 
Смежные вопросы