如何在所有TextBox中自动设置ValidatesOnExceptions,ValidatesOnDataErrors和NotifyOnValidationError?

时间:2012-04-11 16:37:55

标签: c# wpf xaml setter

目前,我正在创建文本框并在每次创建绑定时指定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。

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

2 个答案:

答案 0 :(得分:2)

以您描述的方式不可能,因为这些属性存在于Binding内的DependencyObject个实例上,而不是作为DependencyObject自身的属性公开。无法创建定位Style的{​​{1}}。

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

  1. 定义您自己的扩展Binding的类,并设置您想要的默认值。然后,您将在目前使用的任何地方使用该类Binding
  2. 定义一个附加行为,找到它所附加的对象中的所有Binding并设置所需的默认值。
  3. 第一个选项对我来说比较好,因为第二个选项可能会产生不可预见的后果(如果有不希望希望它采用默认值的绑定怎么办?)。第二个选项也会慢得多,因为它需要动态搜索它附加到的项目的所有依赖项属性。

答案 1 :(得分:1)

我在一段时间之前问了几乎相同的问题,也许你也可以看一下:

Style For Bindings?