代码之家  ›  专栏  ›  技术社区  ›  HCL

是否从强制值回调中引发异常

  •  8
  • HCL  · 技术社区  · 14 年前

    是否适当地从 CoerceValueCallback 如果给定值无效或只应 ValidateValueCallback 是否用于DP值验证?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Marko    14 年前

    确实应使用强制值来修复值(例如,将其限制在最小值和最大值之间)。我不知道抛出一个异常是否会使应用程序崩溃(您只需要测试它来发现),或者框架是否会处理它,但是我无论如何都不会推荐它,因为这会违反良好的编码实践。

    为了获得validateValue的额外信息,有时需要在类中定义一些额外的字段。您可以绑定这些字段,也可以在设置dp值之前设置它们,然后在validateValue中访问这些字段并获取所需的额外信息。这个额外的字段通过中间的“层”创建和传递信息,微软似乎没问题,因为这是他们(目光短浅)设计框架的方式。

    我将给您一个新的WPF数据报的例子。如果使用标准路由并定义RowValidationRule,则需要访问itemsSource(表),以便确定行中的给定值是否已存在于表中。这是一个非常标准的操作,但是验证回调中没有提供该信息。因此,您必须在验证类中创建一个字段,您可以将DataGrid的项源绑定到该字段,然后在验证期间访问该字段…

        2
  •  0
  •   Ruedi Steinmann    14 年前

    首先:我花了点心思才发现dp是依赖属性。

    第二:据我所知,强制值回调是将属性的值固定为给定值,而不是验证该值。因此,我选择validateValueCallback进行验证。那不是叫什么吗?