我的设置如下:
- WPF 4 应用程序
- MVVM Lite 框架
- 在对话框模式下,在主窗口上方显示“添加项目”窗口(使用view.ShowDialog())
- 对话框有多个输入字段,“保存”按钮的IsDefault属性设置为True
- 使用命令绑定处理“保存”按钮
- 在视图的XAML和ViewModel的相应属性之间定义数据绑定(单向,UI更新ViewModel,Mode=OneWayToSource)
问题是当我按键盘上的Enter键时,我提供的最后一个输入字段的值无法推送到ViewModel 的底层属性。
我怀疑这与输入字段在窗口关闭之前没有失去焦点有关(因此所有绑定都被“解除绑定”)。 作为比较,如果我“点击”“保存”按钮(而不是通过按键处理它的Click事件),则该值将更新为该属性。 此外,如果我(可怕!可怕!)向按钮的Click事件添加事件处理程序,并在代码后台调用button.Focus(),一切都有效!
有什么解决方法吗?
显然,我不想处理任何窗口关闭事件,并“手动”获取缺少的值...这将违反整个MVVM概念:-(
有更好的建议吗?
谢谢, Alex