MVVM、Xaml、命令绑定、异常处理和消息框

MVVM、Xaml、命令绑定、异常处理和消息框,xaml,exception-handling,windows-phone-8,commandbinding,Xaml,Exception Handling,Windows Phone 8,Commandbinding,我目前正在开发一个windows phone应用程序。我非常了解MVVM及其好处。因此,我尽力将UI逻辑与业务逻辑分开。但我在这件事上被难住了 假设ViewModel中有一个命令,UI通过xaml绑定到此命令。因此我从不调用execute函数。假设此命令实际上能够引发异常。我想捕捉这个并显示一个通知。我想到的是: 向命令传递一个接口,以便它在出现问题时发出通知。实现此接口的类可以保存显示消息框的逻辑。这很好,但破坏了应用程序全球化/本地化。我想将错误消息存储在AppResources.resx文

我目前正在开发一个windows phone应用程序。我非常了解MVVM及其好处。因此,我尽力将UI逻辑与业务逻辑分开。但我在这件事上被难住了

假设ViewModel中有一个命令,UI通过xaml绑定到此命令。因此我从不调用execute函数。假设此命令实际上能够引发异常。我想捕捉这个并显示一个通知。我想到的是:

  • 向命令传递一个接口,以便它在出现问题时发出通知。实现此接口的类可以保存显示消息框的逻辑。这很好,但破坏了应用程序全球化/本地化。我想将错误消息存储在AppResources.resx文件中,以便在更改默认语言时选择适当的错误消息。我不想从命令中调用AppResources,因为如果我将它添加到viewmodel中的命令中,我将无法测试它
  • 我们可以通过try-catch从代码隐藏中调用该命令,然后可以根据异常直接显示MessageBox
  • 我对这两种解决方案都不太满意。对于绑定到UI的命令,有没有处理异常的好方法?我看到了DispatchedUnandledException,但它是特定于域的吗?我不希望在一个地方捕获所有异常以通知用户。我需要适当的视图来处理它。
    谢谢

    您可以使用某种信使,比如mvvm light的信使。视图可以侦听错误消息,然后显示VM发送的通知

    请看一个例子