0

我在网上查看了几种不同的资源,以找到使用 MVVM 和 WPF 在 C# 中的简单命令示例。我只想知道单击按钮后如何显示消息。我在网上找不到这么简单的东西,所以我在这里问。

4

3 回答 3

0

不幸的是,从纯粹主义者的角度来看,“简单”的事情(例如显示消息)Window往往会违反 MVVM,或者需要相当多的代码来构建一个可以干净地工作的系统。

话虽如此,在大多数情况下,显示消息通常是纯粹的视图问题。因此,这是我经常在 View 后面的代码中做的事情。乍一看,这似乎违反了 MVVM,但由于它是“纯视图”相关操作,因此在实践中并不是真正的问题。

于 2013-08-27T17:26:25.663 回答
0

您可以通过两种方式做到这一点 1.您可以在 ICommand 的 Execute 上的 View-Model 中放置一个消息框,当您单击按钮时,将弹出消息框或 2.您可以将 Message 隐藏在Xaml,并在您单击 Button 时使其可见

于 2013-10-16T01:42:40.063 回答
0

这实际上取决于消息的性质、消息的来源以及何时显示。虽然它肯定是与视图更相关的操作,但源可能来自可能值得在视图模型中进行测试的业务逻辑。

一般来说,我会选择以下两种方法之一:

  • 在构建视图模型时使用正常的依赖注入,并注入一个服务(通过其接口),该服务将负责显示所有消息。真正的实现可能很简单,例如在视图级别调用MessageBox.Show或更复杂的事情。

  • 给 view-model 一个事件让它引发,在它的EventArgs参数中包含所有的消息数据。该视图将订阅该事件并根据需要显示通知。

在这两种情况下,视图模型都不知道视图特定的逻辑,但仍然能够封装业务逻辑以生成消息,并且完全可进行单元测试。

于 2013-10-16T01:58:27.263 回答