WPF数据绑定 - 对于具有验证规则的所有绑定,将NotifyOnValidationError设置为true

Red*_*dog 7 .net wpf binding

在我的WPF应用程序,我想设置NotifyOnValidationErrortrue(框架默认其为假)的所有子控件/绑定,如果他们有附加到绑定任何ValidationRules.实际上,指定其他绑定默认值也会很好 - 例如ValidatesOnDataErrors,也应始终为true.

例如,在下面的文本框中,我不想手动指定NotifyOnValidationError属性.

<TextBox>
    <TextBox.Text>
        <Binding Path="PostalCode" 
                 ValidatesOnDataErrors="True" 
                 NotifyOnValidationError="True">
            <Binding.ValidationRules>
                <rules:PostalCodeRule />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)

Fre*_*lad 7

跟进Ragepotato的回答.
要做到这一点,最简单的方法是创建你自己的Binding,从继承Binding,然后设置你所需要的,喜欢的东西NotifyOnValidationError="True",并ValidatesOnDataErrors="True"在构造函数中.

public class ExBinding : Binding
{
    public ExBinding()
    {
        NotifyOnValidationError = true;
        ValidatesOnDataErrors = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你使用这个Binding代替

<TextBox>
    <TextBox.Text>
        <local:ExBinding Path="PostalCode">
            <local:ExBinding.ValidationRules>
                <rules:PostalCodeRule />
            </local:ExBinding.ValidationRules>
        </local:ExBinding>
    </TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)


Rag*_*ato 5

由于Binding只是一个标记扩展,您可以创建一个自定义标记扩展,扩展Binding并将这些属性设置为您想要的默认值.