【发布时间】:2015-01-02 17:46:34
【问题描述】:
MVVM (Model-View-ViewModel) 模式通常用于 WPF 应用程序中,以提供一种非常有效地使用数据绑定功能的便捷方式。
我在 Windows 窗体应用程序中使用 MVVM 模式,到目前为止效果很好。但是在某些情况下,我遇到了 Windows 窗体控件上的数据绑定问题: 假设我通过
将标准日期时间选择器的 Value 属性绑定到我的 ViewModel 的 CurrentDate 属性dtpMyDateTimePicker.DataBindings.Add("Value", mViewModel, "CurrentDate")
,该属性仅在控件失去焦点时更新。查看日期时间选择器的工作原理,通过单击“箭头”符号,您可以打开日历并滚动查看月/年。虽然我想在滚动不同日期时不断更新我的表单,但数据绑定只会在我选择日期并关闭日历工具时更新我的 viewModel 的属性。
一个更简单的例子是文本框的文本属性上的数据绑定(想象一个搜索字段) - 我当前使用的数据绑定方法不允许在输入时不断更新我的表单。
显然我可以在我的表单上实现控件的 _ValueChanged 事件并手动更新 ViewModel 的属性。然而,这消除了 MVVM 模式的全部魔力,因为我现在只使用单向数据绑定(ViewModel -> View)并且需要再次在表单中实现逻辑(更改事件)。
TLDR:所以基本上我正在寻找一种在 Windows 窗体应用程序中指定某种 UpdateSourceTrigger 的方法。
您对如何“正确”执行此操作有什么建议吗?
提前谢谢你!
【问题讨论】:
标签: wpf vb.net winforms mvvm data-binding