2013-10-30 40 views
1

问题很简单。在MVVM中,执行CanExecute和Execute 逻辑调用逻辑位于ViewModel的控制下是否是ICommand实现的责任?在MVVM中,ICommand实现负责什么?执行或调用?

我在问,因为当我尝试在ICommand实现中实现逻辑时,感觉Command和ViewModel以及其他对象之间有很多紧密耦合。但是当我只尝试从ICommand实现中调用方法时,我感觉到我有很多过多的代码来实现方法调用。如果我对ICommand实现的单一责任更加清楚,我认为这个问题会自行解决。

逻辑或调用?

回答

2

调用。

它是ViewModel中的一个占位符,正在从视图中调用。然后它应该在正确的情况下指导您正确的方法(执行)(可以执行)。

MVVM比其他方法更详细,编写锅炉代码可能有点烦人,但你得到的回报是相当大的。

+1

还值得注意的是,一个常见的错误是具有实现级命令名称,而不是功能。例如,如果您希望单击时进行列表刷新,我已经看到人们将该命令标记为“MouseClick”,并将其绑定到鼠标左键单击。这是错误的;该命令应该描述它的功能效果,然后绑定应该给你上下文。在这个例子中,鼠标点击事件应该绑定到ListRefresh命令。 –

+0

我同意,好的先生。对你的赞赏:) – Noctis

相关问题