我正在学习WPF,但困惑的是数据绑定异常不会引起运行时/未处理异常。
有人能解释一下数据绑定以这种方式工作的好处吗?我认为肯定有好处,但目前还没有看到(免责声明:我刚开始学习数据绑定)。
如果有解释此决策理论或实际原因的资源链接也可以。
我正在学习WPF,但困惑的是数据绑定异常不会引起运行时/未处理异常。
有人能解释一下数据绑定以这种方式工作的好处吗?我认为肯定有好处,但目前还没有看到(免责声明:我刚开始学习数据绑定)。
如果有解释此决策理论或实际原因的资源链接也可以。
{Binding Name.Length}
,其中Name是可能为null的字符串属性。)在这种情况下,您希望此操作无效,因为您知道当Name为null时,控件将永远不会显示(由于触发器等原因),或者因为您知道这将是绑定源正在加载其数据时的短暂条件。Binding
元素只有一个字符串路径,稍后会转换为 PropertyPath
实例。然后,将使用此实例向上导航到目标属性。因此,这个导航器可能会在每一步检查 null 并在遇到它时返回它;但仍有问题的是,它如何处理被访问的属性 getter 抛出的实际异常。在我看来,那是一场灾难的配方。 - Crono我认为这是因为生成异常的成本太高了。当前的实现即使在存在一些无效绑定的情况下也能正常工作,而以当前的形式,这实际上会对性能产生非常显著的影响。举个例子,创建一个进行绑定并将1,000条记录加载到其中的DataGrid。测量所有绑定正确的性能,然后再测量其中一个绑定错误的性能。差异是相当大的。如果还要加上异常类实例,情况可能会变得糟糕得不可控。这只是我的意见。