如何创建WPF验证规则以确保两个文本字段具有相同的值?

时间:2009-10-09 17:01:06

标签: c# .net wpf validation xaml

如何创建验证规则以确保Value2与Value1具有相同的值?如果验证规则不是最好的方法那么哪个更好?我可以让TextChanged事件处理这个,但我想知道是否有更优雅的东西。

<TextBox Name="Value1TextBox">
    <TextBox.Text>
        <BindingPath Path="Value1" UpdateSourceTrigger="PropertyChanged" />
    </TextBox.Text>
</TextBox>

<TextBox Name="Value2TextBox">
    <TextBox.Text>
        <BindingPath Path="Value2" UpdateSourceTrigger="PropertyChanged" />
    </TextBox.Text>
</TextBox>

2 个答案:

答案 0 :(得分:3)

验证规则不是太方便,如果您需要组合多个值进行验证。 如果您可以访问绑定数据类型,那么实现IDataErrorInfo将会更加容易,您只需要在Binding上启用ValidateOnDataError = True验证。 如果没有,您需要做一些工作来参数化您的ValidationRule: 要么使用此解决方法 Virtual branch pattern by Josh Smith 或者像这里描述的一些绑定代理(顺便说一下,非常好的帮手) Binding Proxy by Douglas Stockwell

使用其中一个时,您应该设法将一个绑定作为验证规则的参数,同时验证另一个。

答案 1 :(得分:2)

看起来实现System.ComponentModel.IDataErrorInfo界面并添加ValidatesOnDataErrors就可以了。

<TextBox Name="Value2TextBox">    
    <TextBox.Text>        
        <BindingPath Path="Value2" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" />
    </TextBox.Text>
</TextBox>