2009-05-30 3 views
3

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

Я связал несколько текстовых полей с некоторыми свойствами (имя & фамилия человека класса) и имеет пункт меню, который просто показывает полное имя, и работает он довольно хорошо, за исключением того, что свойства обновляются только как только фокус текстовых полей. Это означает, что если я изменил первое имя и нажмем на кнопку show name menuitem, я получу старое значение firstname.

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

ответ

6

Если вы сделаете это, вы рискуете положить плохие данные в свой объект данных, но вот как это сделать:

В вашем методе MyTextBox.DataBinding.Add() используйте this overload с OnPropertyChanged для DataSourceUpdateMode паров вместо стандартного OnValidate

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

+0

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

5

Просто позвоните ValidateChildren формы() в коде на кнопку делает сохранить

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