1

我有一个 WPF 对话框(Window 的继承者)。该对话框有一个“确定”按钮,该按钮绑定到 ViewModel 上的“进程”命令。(“进程”命令是 Josh Smith RelayCommand。)“确定”按钮上的命令参数设置为对话窗口本身。如果处理成功,则从 ViewModel 的命令处理程序内部关闭对话窗口。在我看来,这似乎违反了单一职责原则。可能会或可能不会关闭调用者窗口的命令的正确模式是什么?

4

1 回答 1

1

尽管看起来有些设计模式被破坏了,但 ViewModel 可能知道其 View 以实现特定任务(例如关闭对话框或设置特定状态)的常见做法。

在 View-ViewModel 绑定期间,可以使用对 View 的引用来初始化 ViewModel。稍后通过执行命令,ViewModel 可以使用视图通过通用接口提供的功能。

在您的情况下,我建议这样做(就像Caliburn Micro一样),而不是将 Window 作为CommandParameter.

于 2012-08-03T19:39:06.990 回答