Это что-то вроде детектива WPF! Мои храмы проверки: он не появляется, когда ожидалось
Проблема
В основном, я использую IDataErrorInfo в моей модели представления, чтобы предоставить обратную связь об ошибках ввода данных. Я вижу, что он вызывается и работает должным образом, но шаблон ошибки проверки для связанного элемента управления никогда не отображается в WPF!
Я пробовал использовать как встроенный шаблон ошибки красной границы текстового поля по умолчанию, шаблон ошибки стиля, так и жестко закодированный шаблон. Ничего из этого не отображается в случае ошибки данных.
Вот мой код привязки xaml:
<TextBox x:Name="txtCaseNumber"
Text="{Binding Path=CaseNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>
Как ни странно, ошибка попадает в коллекцию Validation.Errors. Следующий код приводит к тому, что мое сообщение об ошибке IDataErrorInfo отображается рядом с привязанным элементом управления. Это наводит меня на мысль, что проблема находится на стороне xaml, а не на стороне модели представления.
<ContentPresenter
Content="{Binding ElementName=txtCaseNumber, Path=(Validation.Errors).CurrentItem}" />
Кроме того,
System.Windows.Controls.Validation.GetHasError (txtCaseNumber)
возвращает истину.
Я размещаю WPF в winforms, если это имеет значение. Я не могу найти в своем коде или стилях ссылок на Validation или ErrorTemplate, поэтому я почти уверен, что это не собственная цель стилизации.