当使用WPF中的命令绑定时,处理异常的最佳实践是什么?

8

我正在为一个WPF应用程序使用MVVM模式。在多个地方,我将命令绑定到视图中的输入元素上,如下所示的XAML代码:

<Button Command="{Binding TheClickCommand}" >Click</>

当我的视图模型执行命令时抛出异常处理的最佳实践是什么?即,通知视图出现问题的最佳方式是什么?我可以使用IDataErrorInfo模式吗?还是有其他内置模式适用于此场景?

2个回答

1

我很讨厌这个答案,但它确实取决于上下文。

今天我可能会使用IoC,来获取ILoggerServiceINotificationSerivce或两者都,并在出现问题时执行相关操作。明天我可能会满意于在DispatcherUnhandledException事件处理程序中的某个地方使用原始的MessageBox.Show()。或者也许我会编写自己的附加属性,比如:

<Button loc:Commanding.ExceptionAwareCommand="{loc:CommandExtension 
          Command={Binding TheClickCommand}, 
          FallBackCammand={Binding ErrorHandlerCommand}}" />

和它一起生活...

可能的答案是:“选择最佳方法在两个类之间进行通信并使用它”。抱歉没有具体说明...也许其他人会更具体。

NB:答案中提供的接口名称不是WPF标准。我只是用它们作为示例。

干杯


接口名称可能不是标准的,但它们似乎正在成为一种惯例。 - Ian Oakes
尽管我希望得到一个更具体的答案,但我想你的回答已经是最接近的了。谢谢 :-) - Jakob Christensen

0

最简单的方法是弹出一个消息框。更复杂的方法可能是使用通知服务,在适合您应用程序的方式下向用户显示消息,但可以使用虚假服务进行单元测试。


但是我是否应该在我的视图模型上放置一个事件,让视图监听该事件呢?或者有什么更好的方式吗? - Jakob Christensen
除非视图需要提供一些专门的错误处理,否则不需要。大多数情况下,您会想要告知用户出现了什么错误。视图模型的主要目的是从视图中删除演示逻辑。 - Ian Oakes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接