У меня есть приложение MVVM WPF, где свойства модели украшены атрибутами проверки. Обязательный и настраиваемый атрибут, который проверяет, существует ли значение. Проверка выполняется на LostFocus.
Если я ввожу данные (TextBox), которые не удовлетворяют первому атрибуту, отображается правильное сообщение об ошибке, но если я изменяю эти данные так, что не удовлетворяет второму атрибуту, сообщение об ошибке из первого атрибута все еще отображается.
Если я ввожу первое неправильное значение, затем исправлю значение, а затем второе плохое значение, отображается правильное сообщение об ошибке.
Я также попытался выполнить проверку не используя атрибуты, но проверяя значение в настройке свойств и исключении throwing, все работает нормально.
Где может быть ошибка?Атрибуты проверки данных, отображающие неверное сообщение об ошибке
0
A
ответ
0
Проблема заключалась в реализации IValueConverter, используемой для отображения сообщений об ошибках в качестве подсказок элементов управления.
Не работает:
<Style x:Key="ErrorToolTipStyle" TargetType="Control">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors), Converter={StaticResource ValidationErrorsToString}, Mode=OneWay}"/>
</Style>
Рабочая:
<Style x:Key="ErrorToolTipStyle" TargetType="Control">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent, Mode=OneWay}"/>
</Style>