0

我目前正在开发一个 Windows Phone 应用程序。我对 MVVM 及其好处了解不少。所以我尽量将 UI 逻辑与业务逻辑分开。但我被这个难住了。

假设 ViewModel 中有一个命令,并且 UI 通过 xaml 绑定到该命令。因此我从不调用执行函数。假设这个命令实际上能够抛出异常。我想抓住这个并显示一个通知。以下是我想到的:

  1. 将接口传递给命令,以便它可以在出现问题时通知。实现该接口的类可以保存显示消息框的逻辑。这可以正常工作,但会破坏应用程序全球化/本地化。我想将错误消息存储在 AppResources.resx 文件中,以便在更改默认语言时选择适当的错误消息。我不想从命令中调用 AppResources,因为如果我将它添加到视图模型中的命令中,我将无法测试它
  2. 我们可以从后面的代码中调用命令,使用try catch,然后可以根据异常直接显示MessageBox。

我对这两种解决方案都不太满意。有没有一种好方法来处理绑定到 UI 的命令的异常?我看到了 DispatchedUnhandledException,但它会是特定于域的吗?我不希望在一个地方捕获所有异常以通知用户。我想要适当的视图来处理它。谢谢!

4

1 回答 1

1

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

请参阅此处的示例。

于 2012-12-15T05:19:44.900 回答