我想學習如何使用WPF命令,以及它們如何適合MVVM模式。我知道某些控件(如按鈕或菜單)具有一個Command屬性,該屬性在設置爲ICommand類的實例時將按鈕連接到該命令。一旦設置完成,該按鈕就會通過命令的CanExecuteChanged事件關閉並啓用,然後單擊該控件將調用該命令的Execute方法。ICommands如何以及在哪裏適合整體WPF MVVM模式?
但是,每個ICommand的實例應該在哪裏生活?我在教程中看到了各種不同的選項,我不確定哪個是正確的。在一些示例中,創建一個靜態的「ApplicationCommands」類,並將每個命令的一個實例分配給該類的靜態屬性。在其他例子中,我已經看到命令設置爲ViewModel的屬性,在其他視圖/窗口本身。命令實例的首選位置是什麼?
此外,命令如何與視圖,視圖模型或模型關聯?命令應該知道和/或操縱哪些組件?命令執行時會發生什麼?是否應該調用模型的某些方法,然後將變化傳回View Model/View?還是應該通過視圖模型的方法與模型通信?