在我的WPF应用程序中,如果所有子控件/绑定都附加了绑定任何ValidationRules,我想将NotifyOnValidationError
设置为true
(框架默认为false)。实际上,指定其他绑定默认值也很好 - 例如ValidatesOnDataErrors
也应始终如此。
例如,在下面的文本框中,我不想手动指定NotifyOnValidationError属性。
<TextBox>
<TextBox.Text>
<Binding Path="PostalCode"
ValidatesOnDataErrors="True"
NotifyOnValidationError="True">
<Binding.ValidationRules>
<rules:PostalCodeRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
答案 0 :(得分:7)
跟进 Ragepotato的回答
最简单的方法是创建自己的Binding
继承自Binding
,然后设置所需的内容,例如构造函数中的NotifyOnValidationError="True"
和ValidatesOnDataErrors="True"
。
public class ExBinding : Binding
{
public ExBinding()
{
NotifyOnValidationError = true;
ValidatesOnDataErrors = true;
}
}
然后你使用这个Binding来代替
<TextBox>
<TextBox.Text>
<local:ExBinding Path="PostalCode">
<local:ExBinding.ValidationRules>
<rules:PostalCodeRule />
</local:ExBinding.ValidationRules>
</local:ExBinding>
</TextBox.Text>
</TextBox>
答案 1 :(得分:5)
由于Binding
只是markup extension,您可以创建一个扩展Binding
的自定义Markup Extensions,并将这些属性设置为您想要的默认值。