当ValidationRule返回false时,不会触发属性集

时间:2011-06-22 14:06:34

标签: wpf xaml data-binding validation

我在文本框上有一个ValidationRule。当ValidationResult返回true时,将触发文本框绑定到的属性上的集合。

当ValidationResult返回false时,不会触发该集。

关于它为什么不被射击以及如何解决它的任何指示,非常感谢。

由于

这是文本框的XAML:

<Binding Path="CorrectEntry" UpdateSourceTrigger="PropertyChanged"  NotifyOnValidationError="True" >
    <Binding.ValidationRules>
        <localValidation:CorrectEntryValidationRule x:Name="validator" ValidatesOnTargetUpdated="True">                                                   <localValidation:CorrectEntryValidationRule.RangeContainer>
                <localValidation:CorrectEntryRangeContainer
                    DataContext="{Binding 
                    Source={StaticResource DataContextBridge}, 
                    Path=DataContext}" 
                    Min="{Binding Lower}"
                    Max="{Binding Upper}"
                    />
                </localValidation:CorrectEntryValidationRule.RangeContainer>
            </localValidation:CorrectEntryValidationRule>
    </Binding.ValidationRules>
</Binding>

2 个答案:

答案 0 :(得分:2)

请参阅验证规则的文档。根据设计,当验证规则返回false时,属性不会被设置。

如果您希望设置Propery,则不应使用验证规则。您应该从IDataErrorInfo继承您的类。并从该接口实现2个方法。

答案 1 :(得分:1)

这是正常且通常需要的行为,如果您的数据无效,则不希望将其保存在模型中。

(如果您想通过设置器中抛出的异常进行验证,可以使用a property on the binding