以编程方式更改WPF TextBox中的验证规则

时间:2009-10-20 07:04:38

标签: wpf binding

我有一个像这样定义的文本输入区域:

    <TextBox>
        <TextBox.Text>
            <Binding Path="MyProperty">
                <Binding.ValidationRules>
                    <valid:MyValidator/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>

我的问题是,根据其他设置,应该插入的内容会有所不同。因此,输入数据的验证行为应该改变。

如何在后面的代码中更改某个文本框的活动验证规则?

2 个答案:

答案 0 :(得分:22)

使用BindingOperations.GetBinding()获取TextBox.Text的Binding对象。然后根据需要操作绑定的ValidationRules集合。

Binding binding = BindingOperations.GetBinding(myTextBox, TextBox.TextProperty);
binding.ValidationRules.Clear();
binding.ValidationRules.Add(myCrazyValidationRule);

答案 1 :(得分:1)

最令人讨厌的解决方案是为每个应该能够设置的验证规则定义一个文本框。将一个文本框绑定到每个验证规则。然后,根据外部设置/条件,折叠/隐藏除应该应用的验证规则的文本框之外的所有文本框。