我在网上查看了几种不同的资源,以找到使用 MVVM 和 WPF 在 C# 中的简单命令示例。我只想知道单击按钮后如何显示消息。我在网上找不到这么简单的东西,所以我在这里问。
3 回答
不幸的是,从纯粹主义者的角度来看,“简单”的事情(例如显示消息)Window
往往会违反 MVVM,或者需要相当多的代码来构建一个可以干净地工作的系统。
话虽如此,在大多数情况下,显示消息通常是纯粹的视图问题。因此,这是我经常在 View 后面的代码中做的事情。乍一看,这似乎违反了 MVVM,但由于它是“纯视图”相关操作,因此在实践中并不是真正的问题。
您可以通过两种方式做到这一点 1.您可以在 ICommand 的 Execute 上的 View-Model 中放置一个消息框,当您单击按钮时,将弹出消息框或 2.您可以将 Message 隐藏在Xaml,并在您单击 Button 时使其可见
这实际上取决于消息的性质、消息的来源以及何时显示。虽然它肯定是与视图更相关的操作,但源可能来自可能值得在视图模型中进行测试的业务逻辑。
一般来说,我会选择以下两种方法之一:
在构建视图模型时使用正常的依赖注入,并注入一个服务(通过其接口),该服务将负责显示所有消息。真正的实现可能很简单,例如在视图级别调用
MessageBox.Show
或更复杂的事情。给 view-model 一个事件让它引发,在它的
EventArgs
参数中包含所有的消息数据。该视图将订阅该事件并根据需要显示通知。
在这两种情况下,视图模型都不知道视图特定的逻辑,但仍然能够封装业务逻辑以生成消息,并且完全可进行单元测试。