为什么在MVVM中使用命令

Zwo*_*Rmi 1 .net mvvm icommand

我实际上是在学习MVVM模式.

关于命令,我无法理解一件事.为何使用它们?为什么不只是使用一个函数(在View)中调用一个ViewModel函数?什么命令提供给我们?显然他们被广泛使用,但我找不到原因.

Sri*_*vel 6

为何使用命令?

因为命令提供封装.您可以隐藏任何类型的复杂逻辑ICommand,您可以随时交换实现.这样你的View就不需要了解你的ViewModel等方法.它只需要知道ViewModel提供了一个操作"x"的命令.

ICommand许多框架元素都支持更多接口,例如Button,MenuItem等等.当你有一个ICommand可以将它绑定到View时 - 它将负责执行命令.

为什么不使用调用ViewModel函数的函数(在View中)?

因为我们不想混淆责任.View不应该有任何逻辑,它只是一个愚蠢的事情,它只是向用户显示数据.不再.

假设您的视图中有逻辑.有一天,你的经理可以说我们不再需要这个UI了(看起来不太好).让它变得有吸引力.不仅必须重新设计视图,还需要在View中重复逻辑.这是重复的工作(针对DRY原则),可能会因为UI已经改变等而引入新的错误.

分离View和Logic的另一个主要优点是您可以轻松地对Logic进行单元测试(在ViewModel和Model中).