在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?或者我的流程中的其他地方是否有错误?
var box = sender as TextBox;
// Change your box text..
box.GetBindingExpression(TextBox.TextProperty).UpdateSource();
Run Code Online (Sandbox Code Playgroud)
这应该强制您的绑定更新.