Это немного WPF whodunnit! Мои проверки храмы не появляются, когда ожидается
Validation ErrorTemplate не отображается при ошибках данных
Проблема
В основном, я использую IDataErrorInfo на мой взгляд, модель, чтобы обеспечить обратную связь об ошибках при вводе данных. Я вижу, что это называется и работает как ожидалось, но шаблон ошибки проверки для связанного элемента управления никогда не отображается WPF!
Я пробовал использовать с использованием встроенного шаблона ошибки по умолчанию для текстового поля по умолчанию, шаблона ошибки стиля и жестко закодированного шаблона. Ни один из них не отображается в ситуации с ошибкой данных.
Heres мой XAML код связывания:
<TextBox x:Name="txtCaseNumber"
Text="{Binding Path=CaseNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>
Wierdly, ошибка попадает в коллекцию Validation.Errors. Следующий код приводит к тому, что мое сообщение об ошибке IDataErrorInfo отображается рядом с элементом управления привязкой. Это заставляет меня думать, что проблема находится на стороне xaml, а не на стороне viewmodel.
<ContentPresenter
Content="{Binding ElementName=txtCaseNumber, Path=(Validation.Errors).CurrentItem}" />
Кроме того, System.Windows.Controls.Validation.GetHasError(txtCaseNumber)
возвращает истину.
Я принимаю WPF в winforms, если это имеет значение. Я не могу найти ссылки в моем коде или стилях для Validation или ErrorTemplate, поэтому я уверен, что это не стайлинг собственной цели.
Я советую вам шляпу, сэр! У меня было расширение UserControl> Expander> Text в расширении VS. Но это не приведет к ошибкам IDataErrorInfo. Сделано образцовое приложение WPF для размещения UC - проблема сохраняется (VS Extn исключен). Сделал другую виртуальную машину, которая работала, исключая виртуальную машину. Затем я ударил ваш пост - добавили пару обработчиков событий Loaded в окно и UC. Разумеется, UC вернул нулевой AdornerLayer. Обернул содержимое расширителя AdornerDecorator, и он сработал! Замедлял меня на 2 дня. Живи, я знаю, думаю. Еще раз спасибо за упорство и время, чтобы задокументировать его для потомков! – Gishu
нет проблем! Я потерял 2 дня на нем :( –
Это только что зафиксировало мою проблему с окном Metro-стиля, которое не предоставило AdornerDecorator. Спасибо! – mortware