2010-06-28 85 views
0

我的目標是讓視圖模型告訴視圖呈現一個MessageBox並詢問用戶一個問題。MVVM Light需要在我的ViewModel中引用System.Windows?

我不希望ViewModel對Windows特定代碼有任何參考。

我花時間下載並安裝MVVM Light Toolkit。現在我發現即使使用該工具包,爲了解決MessageBoxButton和MessageBoxResult之類的問題,我的ViewModel也需要引用System.Windows。

爲什麼要通過所有這些額外的工作,當你剛剛結束了一個ViewModel有一個對System.Windows的引用?我不妨直接從ViewModel調用MessageBox.Show()。基本上我沒有使用MVVM工具箱保存任何東西,所以我只是不明白爲什麼我會使用它。

有人可以請我解釋一下,爲什麼要經過這個努力,如果我仍然需要在我的ViewModel中引用System.Windows?

謝謝,休

+0

單元測試...如果你沒有單元測試MVVM,你可能會使用普通的窗體。 – mxmissile 2010-07-01 07:35:54

回答

0

當您使用MessageBox類,你需要對System.Windows.Forms.dll的引用。 MVVM-Light不需要此參考。

0

它並沒有打破工具箱的目的。該工具包提供了一個輕量級的框架,用於將視圖與模型分離開來,這對於單元測試非常有幫助。

他們重用了枚舉,所以他們不必重寫它們。重複使用UI特定的枚舉確實看起來有點奇怪,但至少它們不是事件處理函數和事件參數。

最後,MVVM使用命令,這需要執行ICommand接口。該界面在PresentationCore中,並且更具有UI特定性:)

總體而言,目的不是去除引用,而是儘可能不使用這些引用,並且枚舉絕對不會打破該模式。

0

mvvm light工具包可幫助您實現mvvm模式。 mvvm light工具包也具有可混合的非常好的優點,(一些調整是爲你製作的,所以你可以使用Expression Blend進行非常簡單的設計)。 Mvvm模式也有助於(如其他人所說)測試應用程序,因爲它很難測試視圖,但測試viewModel要容易得多。

如果你想知道爲什麼你做這個工作,並使用MVVM光,我建議你檢查this related answer

希望它能幫助,祝你好運!

相關問題