为什么ICommand比调用VM的代码更好?

Vac*_*ano 14 .net c# wpf mvvm

我有一个同事问我为什么要使用ICommand模式.

他想添加一个按钮,然后在后面的代码中为它创建一个事件.然后从事件他想在ViewModel上调用一个方法.

我给了他明显的答案:这增加了View和ViewModel之间的耦合.但他认为View和ViewModel已经耦合了.(我们将视图的DataContext设置为后面View视图中的ViewModel:DataContext = new MyViewModel();

是的,我告诉他,他的方式增加了"更多耦合",但它对我来说听起来有点蹩脚.

所以,我知道ICommand是干净的方式,我这样做.但除了不使用现有的耦合器之外,ICommand还会为您带来什么呢?

Tig*_*ran 10

  • 这不是解耦,而是你可以深入了解ModelView层次结构:不是事件抽取,而是事件路由,内置于框架中.

  • 它是关于UI managent:命令有状态(CanExecute),如果将命令分配给控件,如果命令的状态变为false,则控制变为禁用状态.它为您提供了强大的UI状态管理方式,避免了大量的意大利面条编码,尤其是复杂的UI.