如何在所有文本框中自动设置“验证异常”、“验证数据错误”和“通知验证错误”

本文关键字:验证 错误 验证异常 异常 数据 通知 设置 文本 | 更新日期: 2023-09-27 18:30:58

目前,我正在创建文本框并指定 ValidatesOnExceptions=True、ValidatesOnDataErrors=True、NotifyOnValidationError=True:

<TextBox Width="150" Text="{Binding Expander1Name, ElementName=Window, 
         Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, 
         ValidatesOnExceptions=True, ValidatesOnDataErrors=True, 
         NotifyOnValidationError=True}" Background="#FFF5EECC"></TextBox>   

我想使用全局 XAML 资源库设置 ValidatesOnExceptions=True、ValidatesOnDataErrors=True、NotifyOnValidationError=True。

这里的任何人都可以给出一个明确的答案,是否有可能做,如果不是——为什么,如果是——怎么做?

如何在所有文本框中自动设置“验证异常”、“验证数据错误”和“通知验证错误”

不可能以您描述的方式,因为这些属性存在于DependencyObject s 中的 Binding 实例上,而不是作为DependencyObject本身的属性公开。无法创建面向BindingStyle

也就是说,有几种方法可以解决此问题:

  1. 定义您自己的类,该类扩展Binding并设置所需的任何默认值。然后,您将在当前使用过的所有地方使用该类 Binding .
  2. 定义一个附加行为,该行为查找它所附加到的对象中的所有Binding并设置所需的默认值。

第一个选项对我来说更可取,因为第二个选项可能会产生不可预见的后果(如果存在您不希望它采用默认值的绑定怎么办?第二个选项也会慢得多,因为它需要动态搜索它所附加到的项的所有依赖项属性。

我问了几乎相同的问题,也许你也可以看看那里:

绑定的样式?