如何在不丢失WPF绑定的情况下更改TextBox.Text?

Tom*_*sup 5 c# wpf mvvm

在WPF应用程序中,我正在创建一个设置窗口来自定义键盘快捷键.

在文本框中,我处理KeyDown事件并将Key事件转换为人类可读的形式(以及我想要获取数据的形式).

文本框声明如下

<TextBox Text="{Binding ShortCutText, Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)

在事件处理程序中,我尝试使用它们

(sender as TextBox).Text = "...";
Run Code Online (Sandbox Code Playgroud)

(sender as TextBox).Clear();
(sender as TextBox).AppendText("...");
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,绑定回viewmodel都不起作用,viewmodel仍然包含旧数据并且不会更新.在另一个方向(从视图模式到文本框)绑定工作正常.

有没有办法可以在不使用绑定的情况下从代码编辑TextBox.Text?或者我的流程中的其他地方是否有错误?

Kyo*_*ode 9

var box = sender as TextBox;
// Change your box text..

box.GetBindingExpression(TextBox.TextProperty).UpdateSource();
Run Code Online (Sandbox Code Playgroud)

这应该强制您的绑定更新.