2013-10-30 41 views
1

問題很簡單。在MVVM中,執行CanExecute和Execute 邏輯調用邏輯位於ViewModel的控制下是否是ICommand實現的責任?在MVVM中,ICommand實現負責什麼?執行或調用?

我在問,因爲當我嘗試在ICommand實現中實現邏輯時,感覺Command和ViewModel以及其他對象之間有很多緊密耦合。但是當我只嘗試從ICommand實現中調用方法時,我感覺到我有很多過多的代碼來實現方法調用。如果我對ICommand實現的單一責任更加清楚,我認爲這個問題會自行解決。

邏輯或調用?

回答

2

調用。

它是ViewModel中的一個佔位符,正在從視圖中調用。然後它應該在正確的情況下指導您正確的方法(執行)(可以執行)。

MVVM比其他方法更詳細,編寫鍋爐代碼可能有點煩人,但你得到的回報是相當大的。

+1

還值得注意的是,一個常見的錯誤是具有實現級命令名稱,而不是功能。例如,如果您希望單擊時進行列表刷新,我已經看到人們將該命令標記爲「MouseClick」,並將其綁定到鼠標左鍵單擊。這是錯誤的;該命令應該描述它的功能效果,然後綁定應該給你上下文。在這個例子中,鼠標點擊事件應該綁定到ListRefresh命令。 –

+0

我同意,好的先生。對你的讚賞:) – Noctis

相關問題