如果给定值无效或仅CoerceValueCallback
用于DP值验证,是否适合从ValidateValueCallback
抛出异常?
答案 0 :(得分:1)
确实应该使用CoerceValue来修复一个值(例如,在min和max之间限制它)。我不知道抛出一个异常是否会使应用程序崩溃(你只需要测试它来查找)或者框架是否会处理它,但我不会推荐它,因为它会违反良好的编码习惯。
为了获得ValidateValue的额外信息,您有时需要在类中定义一些额外的字段。您可以在为DP设置值之前绑定这些字段或设置它们,然后在ValidateValue中,您可以访问这些字段并获取所需的额外信息。这个额外的字段通过中间“层”创建和传递信息,微软似乎没问题,因为这就是他们(短视)设计框架的方式。
我将举例说明新的WPF数据网格。如果您使用标准路径并定义RowValidationRule,您可以访问ItemsSource(您的表)以确定您的行中的给定值是否已存在于表中。这是一个非常标准的事情,但验证回调中没有提供该信息。因此,您必须在验证类中创建一个可以绑定DataGrid的ItemsSource的字段,然后您可以在验证期间访问该字段...
答案 1 :(得分:0)
首先:我想到了DP意味着依赖属性。
第二:据我所知,CoerceValueCallback是关于将属性的值固定为给定值,而不是验证值。因此,我选择验证ValidateValueCallback。反正不是这样吗?