如何创建验证规则以确保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>
答案 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>