【发布时间】:2015-10-14 07:49:40
【问题描述】:
一般来说,我认为使用 ICommands 来处理需要执行某些操作(例如保存用户输入)的按钮单击是一种很好的做法。然而,当按钮在 UI 上做一些严格的事情时,比如打开一个模态对话框,视图模型不需要处理它,甚至不需要知道它发生了。在这种情况下,似乎只使用按钮的 Click 事件处理程序更有意义,但这样的混合和匹配似乎是一种潜在的反模式。我这样想对吗?
例如:
var openModalButton = new Button();
openModalButton.Click += OnModalButtonClick;
//Elsewhere in the view...
var saveInputButton = new Button { Command = _vm.SaveInput };
通过查看代码并不清楚为什么要使用命令,以及为什么要使用点击事件。
【问题讨论】:
-
我强烈推荐阅读this answer。它坚持使用
ICommand来绑定视图。但是纯粹的 UI 逻辑仍然在代码隐藏中定义。我喜欢这种类型的接口解决方案的地方在于它强制各种 WPF 项目与它处理这些类型的应用程序操作的方式保持一致(当然,假设你有你的 Windows 实现它)。