2014-11-06 81 views
1

MVVM(Model-View-ViewModel)模式通常用於WPF應用程序中,以便非常有效地使用數據綁定功能。帶Windows窗體的MVVM

我在Windows Forms應用程序中使用了MVVM模式,該模式到目前爲止效果很好。然而,在某些情況下,我有一個問題與Windows綁定窗體控件: 說我通過

dtpMyDateTimePicker.DataBindings.Add("Value", mViewModel, "CurrentDate") 

綁定一個標準的日期時間選擇器我的視圖模型的的currentdate屬性的值屬性,屬性纔會更新當控制失去焦點時。通過點擊「箭頭」符號來查看日期時間選擇器的工作方式,您可以打開日曆並滾動瀏覽月/年。雖然我想不斷更新我的表單,當滾動瀏覽不同的日期時,數據綁定只會在我選擇日期並關閉日曆工具時更新我的​​viewModel的屬性。

一個更簡單的例子是數據綁定文本框的文本屬性(設想一個搜索字段) - 我正在使用的數據綁定方法不允許在輸入時不斷更新我的表單。

很明顯,我可以在窗體上實現控件的_ValueChanged事件,並手動更新ViewModel的屬性。然而,由於我現在只使用單向數據綁定(ViewModel - > View)並需要在窗體中再次實現邏輯(更改事件),因此這會將整個魔術帶出MVVM模式。

TLDR:所以基本上我正在尋找一種方法在Windows窗體應用程序中指定某種UpdateSourceTrigger。

你有什麼建議如何做到「正確」?

預先感謝您!

回答

2

Windows窗體中的等效UpdateSourceTriggerDataSourceUpdateMode。您可以爲一個單獨的Binding指定此(並添加此綁定到DataBindings),或者您也可以通過DataBindings.Add()方法的另一個重載它接受第五個參數作爲DataSourceUpdateMode指定此:

dtpMyDateTimePicker.DataBindings.Add("Value", mViewModel, "CurrentDate", true, 
             DataSourceUpdateMode.OnPropertyChanged);