Wpf 在MVVM ViewModel中显示弹出错误消息的干净实现

Wpf 在MVVM ViewModel中显示弹出错误消息的干净实现,wpf,silverlight,design-patterns,mvvm,messagebox,Wpf,Silverlight,Design Patterns,Mvvm,Messagebox,我希望能够显示带有错误和警告的弹出窗口。这些源于我的ViewModel和我的应用程序中的其他实用程序。 我有一个静态类MessageBoxHelper,它为我提供了这个功能 我现在确实遇到了一个关于可测试性的问题。如果我想验证登录测试失败,则触发消息框,并在测试中得到UI-thead异常 我想实现一个松散耦合的系统,它是干净的,有一点开销来提供这个功能。我allready提出了两个想法,但对我来说还有很多缺点: 实现在myDI容器中注册的接口IMessageBoxHelper。这需要我向我的构造

我希望能够显示带有错误和警告的弹出窗口。这些源于我的
ViewModel
和我的应用程序中的其他实用程序。
我有一个静态类
MessageBoxHelper
,它为我提供了这个功能

我现在确实遇到了一个关于可测试性的问题。如果我想验证登录测试失败,则触发
消息框
,并在测试中得到
UI-thead异常

我想实现一个松散耦合的系统,它是干净的,有一点开销来提供这个功能。我allready提出了两个想法,但对我来说还有很多缺点:

  • 实现在my
    DI容器中注册的接口
    IMessageBoxHelper
    。这需要我向我的
    构造函数添加另一个参数。我想避免有一个巨大的构造器
  • 而不是调用
    MessageBoxHelper
    直接使用我的
    EventAggregator
    发送消息,并将
    MessageBoxListener
    实现为捕获这些
    消息并显示它们的单例。但这对我来说似乎有点过头了

  • 这些想法是对的还是有其他方法?

    如果视图模型依赖于能够显示消息框(例如,
    IMessageBoxHelper
    ),为什么不通过注入依赖项来让这一点变得明显?单元测试将很容易,等等。我认为选择解决方案1没有问题。

    I allready对其他服务接口有4个依赖项。我不应该试着避免这种尺寸吗?@Jeroen:Five dependencies听起来不多。当然,如果你的视图模型臃肿和单一,你应该考虑重构它,但我怀疑情况是这样的。