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