我目前正在开发一个 Windows Phone 应用程序。我对 MVVM 及其好处了解不少。所以我尽量将 UI 逻辑与业务逻辑分开。但我被这个难住了。
假设 ViewModel 中有一个命令,并且 UI 通过 xaml 绑定到该命令。因此我从不调用执行函数。假设这个命令实际上能够抛出异常。我想抓住这个并显示一个通知。以下是我想到的:
- 将接口传递给命令,以便它可以在出现问题时通知。实现该接口的类可以保存显示消息框的逻辑。这可以正常工作,但会破坏应用程序全球化/本地化。我想将错误消息存储在 AppResources.resx 文件中,以便在更改默认语言时选择适当的错误消息。我不想从命令中调用 AppResources,因为如果我将它添加到视图模型中的命令中,我将无法测试它
- 我们可以从后面的代码中调用命令,使用try catch,然后可以根据异常直接显示MessageBox。
我对这两种解决方案都不太满意。有没有一种好方法来处理绑定到 UI 的命令的异常?我看到了 DispatchedUnhandledException,但它会是特定于域的吗?我不希望在一个地方捕获所有异常以通知用户。我想要适当的视图来处理它。谢谢!