У меня есть текстовое поле, к которому применено 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 срабатывает правильно, и я вижу сообщение об ошибке, как и ожидалось.Мое приложение содержит кнопку «Отменить изменения», которая перезагружает DataContext.Была надежда, что он сбросит все привязки, и снова в этом текстовом поле будет отображаться исходное значение.По какой-то причине все другие значения на странице, с которыми не связан ValidationRule, будут сброшены должным образом, но это текстовое поле - нет.
Если я удалю ValidationRule из XAML, значение сбрасывается правильно.Если я обрабатываю проверку через IDataErrorInfo, проверка запускается правильно, и значение сбрасывается правильно.Поскольку я использовал ValidationRules во всем приложении, мне было интересно, сталкивался ли кто-нибудь с этой проблемой и решил ее.На этом этапе я бы предпочел придерживаться реализованных ValidationRules, если это возможно, вместо того, чтобы переключать все на IDataErrorInfo.