c# - 如何在不丢失 WPF 中的绑定(bind)的情况下更改 TextBox.Text?

标签 c# wpf mvvm

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

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

文本框是这样声明的

<TextBox Text="{Binding ShortCutText, Mode=TwoWay}"/>

在事件处理程序中,我尝试同时使用两者

(sender as TextBox).Text = "...";

(sender as TextBox).Clear();
(sender as TextBox).AppendText("...");

在这两种情况下,绑定(bind)回 View 模型都不起作用, View 模型仍然包含旧数据并且没有得到更新。 在另一个方向(从 View 模型到文本框)绑定(bind)工作正常。

有没有一种方法可以在不使用绑定(bind)的情况下通过代码编辑 TextBox.Text? 还是我的过程中其他地方有错误?

最佳答案

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

box.GetBindingExpression(TextBox.TextProperty).UpdateSource();

这会强制您的绑定(bind)更新。

关于c# - 如何在不丢失 WPF 中的绑定(bind)的情况下更改 TextBox.Text?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12280927/

相关文章:

C#归并排序性能

c# - 获取一个字符串以在 C# 中引用另一个字符串

c# - WPF找不到命名空间

wpf - 在 WPF MVVM 中新建项目的困境

wpf - 当 WPF ProgressBar 达到 100% 时,如何停止它的脉冲/动画?

c# - Xamarin.Forms:导航到页面失败

c# - 如何生成一个新进程来调用 .net 核心控制台应用程序?

c# - 如何更改 gridview 中组合框的可见性

C# 反射(reflection)为什么 GetFields 会列出我尚未创建的字段?如何排除它们?

c# - 创建单实例 WPF 应用程序的正确方法是什么?