這裏所說的特定功能是我的「問題」,我想解決:MVVM +觀的貫徹落實該視圖模型
我有許多「僅查看」特定功能,例如:
- 更改在運行時查看的ResourcesDictionary(從黑皮膚變藍或其他)
- 保存和恢復視圖的觀點一樣,大小特定的設置,或者由用戶
- ... 設置網格屬性
所有這些功能都與ViewModel無關,因爲它們確實是特定的視圖,並且可能只適合ViewModel的一個客戶端(視圖)(在ViewModel擁有多個客戶端的情況下)。上面的例子只是我想實現的大量功能中的兩個,所以我需要一個更通用的解決方案,而不是僅適用於這兩個示例的解決方案。
當一個解決方案的思維我來到下列兩種方法
- 創建從DependancyObject繼承ViewBase。我不喜歡這個解決方案,因爲它在某種程度上打破了View沒有代碼的MVVM模式的想法。爲了調用這些方法,我需要引用ViewModel中的視圖,這也否定了分離關注的想法。
- 創建一個IView界面。像第一種方法一樣髒。每個視圖都需要實現IView,而且它有代碼。此外,ViewModel需要「以某種方式」知道IView實現以調用其方法
- 將ViewModel的屬性綁定到View的觸發器,行爲,命令。這種方法似乎是最好的,但我認爲我會以非常快的速度運行,因爲某些功能可能不適用於這種方法。例如,僅僅將resourceDictionary綁定到View可能不起作用,因爲需要合併才能正確顯示新資源。然後再次...我只查看ViewModel中的特定功能/信息(如resourcesdictionary),但只有ViewModel的特定客戶端使用此屬性。
如果你們中的任何人已經有同樣的問題,並且對我的問題有一個智能/平滑(並且大多數是通用的)解決方案,這將會很棒。
謝謝