我有一个应用了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。
答案 0 :(得分:0)
由于您要修改代码中的值,您是否需要在绑定中使用Mode = TwoWay才能更新?我没有时间深入挖掘,看看这是不是错了,但它可能是一个开始的地方。