为什么WPF不引发异常来通知数据绑定问题
本文关键字:通知 数据绑定 问题 异常 WPF 为什么 | 更新日期: 2023-09-27 17:54:13
Try
{
// Data Binding
}
Catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
为什么。net不会抛出任何异常,如果有任何错误在数据绑定?这种设计背后的原因是什么?
WPF为控件提供了拦截和响应数据绑定问题的机会,而不是在数据绑定时引发异常。
例如,绑定到文本属性的数字上下控件可以在其周围绘制红色框,或者在绑定错误或验证错误时显示消息框。
有关更多信息,请查看此博客条目:在WPF中显示数据验证消息
数据绑定代码位于WPF的内部;这是自动的。您不需要调用任何方法来更新数据绑定。您的代码通过INotifyPropertyChanged
接口通知WPF绑定属性值的更改,并更新绑定。
但是你也可以绑定一个UI控件到一个不实现INotifyPropertyChanged
的属性。在这种情况下,您无法在代码中的任何地方进行调用来捕获异常。
除了其他人在这里所说的,WPF还为我们提供了PresentationTraceSources
类,我们可以使用它为我们提供与数据绑定(和其他领域)相关的各种级别的反馈。您可以通过查看链接页面和如何:在MSDN上显示WPF跟踪信息页面来了解如何利用WPF跟踪功能。
或者,错误信息也直接输出到Visual Studio的输出窗口,所以你仍然可以找到哪里出了问题,尽管在不同的地方看。
WPF不抛出数据绑定Exception
s的真正的原因可能只有开发团队知道…我不认为知道实际的原因会对你有任何帮助。相反,最好理解它是如何工作的,以及如何适当地处理错误。