3

我有一个数据绑定的 WPF CheckBox 控件,当在 UI 中切换值时,该控件似乎正在吃由相应的属性设置器抛出的异常。我知道如果我在 Binding 实例上提供 ExceptionValidationRule 会发生这种情况,但我仔细检查了 Binding 实例的 ValidationRules 计数为零。我还检查了调用堆栈中是否存在干预异常处理程序,但都不存在。尽管如此,抛出的异常并没有像我预期的那样冒泡到顶部并在应用程序中产生崩溃。

如果我从同一个 UI 中的按钮单击处理程序中抛出异常,该异常会冒泡并导致应用程序崩溃,从而排除某种全局异常处理程序。

有任何想法吗?

谢谢!

4

2 回答 2

3

为了添加到 itowlson 的答案,Binding该类提供了UpdateSourceExceptionFilter属性,该属性允许您提供在更新源发生异常时运行的逻辑。它与ExceptionValidationRule类结合使用,并允许您ValidationError在更新失败时执行除添加 a 之外的其他操作。

于 2009-04-28T07:22:41.540 回答
2

不,这是预期的行为:WPF 数据绑定基础结构捕获由于将值从绑定目标保存回源而导致的异常。我怀疑这是因为应用程序无法围绕保存操作设置异常处理程序(因为它是从 WPF 代码而不是应用程序代码调用的),所以如果 WPF 不这样做,应用程序将崩溃而没有处理异常的机会。

(相比之下,在按钮单击处理程序中,您正在编写代码,因此您确实有机会处理异常。因此 WPF 认为如果您决定不处理异常,可以让异常传播。)

于 2009-04-27T23:10:46.980 回答