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

时间:2011-02-24 00:30:19

标签: .net wpf binding

在我的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>

2 个答案:

答案 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,并将这些属性设置为您想要的默认值。