之前一直開發Winfrom程式,由於近一段時間轉開發Wpf程式,剛好拜讀劉鐵錳《深入淺出WPF》對此有一些理解,如有誤導指出,還望斧正!!! 說道WPF數據驅動的編程思想,MVVM,是為WPF量身定做的模式,該模式充分利用了WPF的數據綁定機制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是 ...
之前一直開發Winfrom程式,由於近一段時間轉開發Wpf程式,剛好拜讀劉鐵錳《深入淺出WPF》對此有一些理解,如有誤導指出,還望斧正!!!
說道WPF數據驅動的編程思想,MVVM,是為WPF量身定做的模式,該模式充分利用了WPF的數據綁定機制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI顯示和邏輯代碼的耦合度,如需要更換界面時,邏輯代碼修改很少,甚至不用修改。與WinForm開發相比,我們一般在後置代碼中會使用控制項的名字來操作控制項的屬性來更新UI,而在WPF中通常是通過數據綁定來更新UI;在響應用戶操作上,WinForm是通過控制項的事件來處理,而WPF可以使用命令綁定的方式來處理,耦合度將降低。
1 MVVM : model--view--viewmodel,在view層不直接引用model,而是通過viewmodel將view與model關聯,降低了view和model的耦合。如下圖所示:
2 View與Viewmodel數據綁定
View中的顯示數據綁定viewmodel的屬性(因此viewmodel需要繼承INotifyPropertyChanged通知介面),其思想是數據驅動,而非事件驅動。
3 Binding 對數據的轉換與校驗
Bindind的作用就是架在Source與Target之間的橋梁,數據可以在這座橋梁的幫助下來流通。但是現實世界有安檢關本來校驗數據的有效性,當然在設計思路上Binding用於有效性校驗關卡是validationRules屬性,數據類型轉換的關卡是Converter屬性。
4 命令