У меня есть приложение MVVM, реализующее IDataErrorInfo с использованием версии 3.5. Я хочу попробовать и нацелиться на 4.0, поэтому изменил настройку Target Framework и изменил ее немного (BitmapFrames и т. П.). Большинство вещей кажутся просто хорошими, и процесс был относительно безболезненным, пока я не заметил, что было затронуто внедрение IDataErrorInfo.
Мой контрольный шаблон для проверки выглядит так:
<ControlTemplate x:Key="temp__">
<Border BorderBrush="Orange" BorderThickness="2" CornerRadius="4" SnapsToDevicePixels="True">
<DockPanel>
<Image HorizontalAlignment="Left" VerticalAlignment="Center"
Width="16" Height="16" Margin="-20,0,0,0"
Source="{StaticResource ErrorIcon}"
ToolTip="{Binding ElementName=adornedElement,
Path=AdornedElement.(Validation.Errors),
Converter={helper:ValidationErrorsToStringConverter}}"/>
<AdornedElementPlaceholder Name="adornedElement"/>
</DockPanel>
</Border>
</ControlTemplate>
и используется в стиле текстового поля, например:
<Setter Property="Validation.ErrorTemplate" Value="{DynamicResource error_holder}">
В моей ViewModel GetValidationError (string propertyName) использует переключатель для проверки правильности соответствующего свойства на основе моих правил.
Проблема в том, что после запуска проверки она не обновляется. Например, поле может быть установлено как требуется или нет. При загрузке обязательные поля помечаются как недействительные с соответствующим сообщением. Ранее при вводе значения, которое все еще было недействительным, сообщение об ошибке во всплывающей подсказке обновлялось. Однако это больше не работает, и сообщение об ошибке все еще остается как сообщение с нулевым значением.
Кто-нибудь знает о каких-либо изменениях в реализации IDataErrorInfo в 4.0, которые могут объяснить это? Есть идеи как это исправить?