【发布时间】:2015-03-29 21:38:47
【问题描述】:
我正在学习和理解 WPF 编程中使用的 MVVM 模式的理论和用法。
来自 WinForms,我仍然倾向于只双击一个按钮来将我带到单击的事件处理程序。
在线阅读有关 MVVM 的信息,显然这应该永远不要这样做,因为,嗯……我不确定。建议使用 ICommand 接口来封装 UI/View 调用的操作。
我还没有阅读为什么这是首选。如果您使用事件处理程序,您仍然不会破坏 View/ViewModel 关系,因为 ViewModel 仍然对 View 一无所知...对吗?
使用命令是否会提供一些事件处理程序不提供的额外灵活性?如果有的话,我觉得使用命令会使代码更加混乱,因为您必须回溯才能找到 ICommand 逻辑。使用事件处理程序,它就在 View 后面的代码中。我错过了什么吗?
那么,本质上,使用事件处理程序而不是命令是否违反了 MVVM 模式?
【问题讨论】:
-
首先,
ICommand提供了CanExecute的功能(即根据布尔值自动启用或禁用按钮)。我不确定如何使用事件处理程序使其变得顺畅。