为什么WPF数据绑定会吞下异常?

时间:2009-06-11 01:23:41

标签: c# .net wpf data-binding

我最近浪费了大量时间尝试调试WPF数据网格(来自WPF工具包)。我有一个绑定到linq查询的列,其中包含抛出异常的属性(在几行中)。 WPF似乎捕获异常,它只是使单元格为空。我已修复导致异常的错误,但我想改变WPF的行为。我一直想知道是不是有问题。为什么吞下异常是默认行为,我该如何改变呢?

5 个答案:

答案 0 :(得分:12)

数据绑定错误本身被吞下,但它们显示在visual studio界面的OUTPUT对话框中。如果您希望收到通知(并尽可能多地控制它),那么您可以使用跟踪源。

Bea Stollnitz在这里提供了一个很好的关于此的文章(并且通常调试绑定):http://www.beacosta.com/blog/?p=52

显然,这个博客已经离开,但我们确实有WayBack机器: http://web.archive.org/web/20091103200557/http://www.beacosta.com/blog/?p=52

我还将它添加到我的Coding笔记本中,用于Evernote: https://www.evernote.com/pub/view/sswrighton/coding/f9786746-94c3-41b5-bcd2-c12992d331a6?locale=en#st=p&n=f9786746-94c3-41b5-bcd2-c12992d331a6

答案 1 :(得分:7)

这是我的favorite。它可以在不更改app.config

的情况下工作

答案 2 :(得分:1)

如果您想为其设置验证,可以添加ExceptionValidationRule

http://msdn.microsoft.com/en-us/library/system.windows.controls.exceptionvalidationrule.aspx

答案 3 :(得分:0)

我实施的解决方案非常类似于Karsten提出的解决方案:

  1. 派生TraceListener投掷而不是记录
  2. 将该监听器添加到PresentationTraceSources.DataBindingSource
  3. 请参阅complete solution on GitHub,其中包括演示应用程序和单元测试项目。

    Exception in Visual Studio

答案 4 :(得分:-1)

在调试器中启用First Chance Exceptions(Debug - > Exceptions)也会对此有所帮助,尽管它可能会令人烦恼