我有一个带有这两个控件的简单WPF对话框:
<TextBox Text="{Binding MyText}"/>
<Button Command="{Binding MyCommand}" IsDefault="True"/>
Run Code Online (Sandbox Code Playgroud)
现在,当我在TextBox中输入一些文本并使用鼠标单击按钮时,一切都按预期工作:TextBox将设置MyText并调用MyCommand.
但是,当我输入一些文本并按Enter键以"单击"默认按钮时,它不起作用.因为在点击进入焦点时不会离开TextBox,绑定将不会刷新MyText.因此,当调用MyCommand(其工作)时,MyText将包含旧数据.
我如何在MVVM中修复此问题?在经典的代码隐藏中,我可能只是在MyCommand处理程序中调用"MyButton.Focus()",但在MVVM中,MyCommand处理程序对该按钮一无所知.
那么现在呢?
TextBox我的表单上有一个控件绑定到我的视图模型中的属性.当前行为的工作方式是,只有TextBox在控件失去焦点后才会通知视图模型中的文本被修改.
如果TextBox实时更改状态,如何通知我的视图模型?这附加到我的视图模型中的属性,该属性确定是否启用了保存按钮.因此,如果我立即输入一个字母TextBox,我的保存按钮应该启用而不必失去焦点.