当ValidationRule被触发时,WPF文本框绑定没有响应

时间:2010-11-16 18:47:27

标签: wpf

我有一个应用了ValidationRule的文本框:

 <TextBox Style="{StaticResource StandardTextBox}" 
                 Grid.Column="1" Grid.Row="4" 
                 IsReadOnly="{Binding SaveModeText}"
                 MaxLength="50">
            <TextBox.Text>
                <Binding Path="Individual.SurName"
                         UpdateSourceTrigger="PropertyChanged"
                         ValidatesOnDataErrors="True"
                         ValidatesOnExceptions="True"
                         NotifyOnValidationError="True">
                    <Binding.ValidationRules>
                        <valid:RequiredTextBoxValidationRule 
                            ErrorMessage="Please enter a last name" />
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>

当页面加载时,文本框包含基于其绑定的正确值。如果我从文本框中删除值,ValidationRule会正确触发,我会按预期看到错误消息。我的应用程序包含一个“Discard Changes”按钮,用于重新加载DataContext。希望是它会重置所有绑定,再一次,这个文本框将显示原始值。出于某种原因,页面上没有与其关联的ValidationRule的所有其他值都会被正确重置,但此文本框不会。

如果我从XAML中删除ValidationRule,则值会正确重置。如果我通过IDataErrorInfo处理验证,则验证会正确触发,并且值会正确重置。因为我在整个应用程序中都使用过ValidationRules,所以我想知道是否有人遇到过这个问题并解决了它。在这一点上,我宁愿坚持使用实现的ValidationRules,而不是将所有内容切换到IDataErrorInfo。

1 个答案:

答案 0 :(得分:0)

由于您要修改代码中的值,您是否需要在绑定中使用Mode = TwoWay才能更新?我没有时间深入挖掘,看看这是不是错了,但它可能是一个开始的地方。