2009-04-27 87 views
2

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

如果我在同一个用户界面中的按钮点击处理程序抛出异常,异常确实会冒泡并导致应用程序崩溃,从而排除某种全局异常处理程序。

任何想法?

谢谢!

回答

3

要添加到itowlson的答案,Binding类提供UpdateSourceExceptionFilter属性,它允许您提供在发生异常时更新源时运行的逻辑。它与ExceptionValidationRule类一起使用,并允许您在更新失败时执行某些操作,而不是添加ValidationError

2

不,这是预期的行为:WPF数据绑定基础结构捕获将绑定目标的值保存回源的异常。我怀疑这是因为应用程序无法围绕保存操作设置异常处理程序(因为它是从WPF代码调用而不是从应用程序代码调用的),所以如果WPF没有这样做,应用程序就会崩溃而没有处理异常的机会。 (相比之下,在一个按钮点击处理程序中,您正在编写代码,因此您有有机会处理异常。因此,如果您决定不处理它,让异常传播是可以的)。