我想学习如何使用WPF命令,以及它们如何适合MVVM模式。我知道某些控件(如按钮或菜单)具有一个Command属性,该属性在设置为ICommand类的实例时将按钮连接到该命令。一旦设置完成,该按钮就会通过命令的CanExecuteChanged事件关闭并启用,然后单击该控件将调用该命令的Execute方法。ICommands如何以及在哪里适合整体WPF MVVM模式?
但是,每个ICommand的实例应该在哪里生活?我在教程中看到了各种不同的选项,我不确定哪个是正确的。在一些示例中,创建一个静态的“ApplicationCommands”类,并将每个命令的一个实例分配给该类的静态属性。在其他例子中,我已经看到命令设置为ViewModel的属性,在其他视图/窗口本身。命令实例的首选位置是什么?
此外,命令如何与视图,视图模型或模型关联?命令应该知道和/或操纵哪些组件?命令执行时会发生什么?是否应该调用模型的某些方法,然后将变化传回View Model/View?还是应该通过视图模型的方法与模型通信?