我最近浪费了大量时间尝试调试WPF数据网格(来自WPF工具包)。我有一个绑定到linq查询的列,其中包含抛出异常的属性(在几行中)。 WPF似乎捕获异常,它只是使单元格为空。我已修复导致异常的错误,但我想改变WPF的行为。我一直想知道是不是有问题。为什么吞下异常是默认行为,我该如何改变呢?
答案 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提出的解决方案:
TraceListener
投掷而不是记录PresentationTraceSources.DataBindingSource
请参阅complete solution on GitHub,其中包括演示应用程序和单元测试项目。
答案 4 :(得分:-1)
在调试器中启用First Chance Exceptions(Debug - > Exceptions)也会对此有所帮助,尽管它可能会令人烦恼