Чтобы заставить TextBox зафиксировать значение обратно в источник привязки, вы можете сделать:
var binding = myTextBox.GetBindingExpression(TextBox.TextProperty);
binding.UpdateSource();
При желании вы можете настроить привязку для обновления источника каждый раз, когда изменяется свойство Text, что будет означать каждый символ, вводимый в текстовое поле.
<TextBox Name="myTextBox"
Text="{Binding TestText, UpdateSourceTrigger=PropertyChanged}" />
Но это вызовет много уведомлений об изменении свойств. В моих приложениях я создал класс, производный от TextBox, для переопределения метода OnKeyDown
, и когда нажата кнопка ввода, я вызываю метод UpdateSource
, как я описал выше, а также вызываю SelectAll
в TextBox, чтобы получить У пользователя возникла мысль, что я просто «принял» их вклад. Извлечение класса из TextBox позволит вам повторно использовать это поведение в любом другом месте, которое вам может понадобиться в вашем приложении.