Я привязываю источник данных к текстовому блоку Windows Forms, и источник должен проверять каждое нажатие клавиши, чтобы обеспечить своевременную обратную связь с пользователем (в виде связанных элементов управления, являющихся включено выключено). Поэтому я привязываюсь к DataSourceUpdateMode :: OnPropertyChanged. К сожалению, это приводит к тому, что текстовое поле сбрасывает курсор влево от поля с каждым нажатием клавиши, в результате чего пользовательский ввод отменяется. Использование DataSourceUpdateMode :: OnValidation устраняет проблему с курсором, но тогда, конечно, источник данных не обновляется до тех пор, пока фокус не покинет TextBox, и это неприемлемо в этом случае (у меня есть кнопка «Применить», которая является серым до тех пор, пока значение не изменится).C++/CLR DataSourceUpdateMode :: OnPropertyChanged с TextBox перемещает курсор влево
This thread описывает проблему, но только для RichTextBox и утверждает, что проблема не существует для обычного TextBox. У меня проблема с регулярным TextBox.
Кто-нибудь видел эту проблему и нашел способ обойти ее и по-прежнему использовать объект Binding?
EDIT: Тестирование показало, что Нажмите событие для кнопки на форме пожаров до того проверки, а это означает, что если пользователь щелкает в текстовом поле, чтобы изменить значение, затем щелкает непосредственно на «Применить» введенный значение не распространяется на источник данных вовремя, чтобы реагировать на щелчок. Другими словами, полезность OnValidate с текстовым полем значительно снижается для моего приложения.
То, что вы называете «неприемлемым», абсолютно нормально. Вы не хотите обновлять источник данных, пока пользователь все еще не работает в текстовом поле. –
Ханс, я специально хочу обновить источник данных, пока пользователь все еще ходит в текстовом поле. В этом весь смысл. –