【问题标题】:In MVVM what is the ICommand implementation responsible for? Execution or Invocation?在 MVVM 中,ICommand 实现负责什么?执行还是调用?
【发布时间】:2013-10-30 11:53:39
【问题描述】:

问题很简单。在 MVVM 中,ICommand 实现的职责是执行 CanExecute 和执行 逻辑,还是 调用 ViewModel 控制下的逻辑?

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

逻辑还是调用?

【问题讨论】:

    标签: design-patterns mvvm icommand


    【解决方案1】:

    调用。

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

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

    【讨论】:

    • 另外值得注意的是,一个常见的错误是具有实现级别的命令名称,而不是功能。例如,如果您想在单击时刷新列表,我已经看到人们将该命令标记为“MouseClick”并将其绑定到鼠标左键单击。这是错误的;命令应该描述它的功能效果,然后绑定应该给你上下文。在这个例子中,鼠标点击事件应该绑定到 ListRefresh 命令。
    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多