Почему ErrorTemplate моего UserControl все еще виден без каких-либо ошибок, вызывающих ErrorsChanged? - PullRequest
0 голосов
/ 05 ноября 2019

Здравствуйте и спасибо за помощь.

У меня проблема с побочным эффектом в поведении, которое я добавил в один из своих элементов UserControl. У меня есть UserControl, который загружает некоторые данные в ComboBox на основе свойства зависимости. Это прекрасно работает, но недавно меня попросили сделать опцию, что если есть только один элемент для его автоматического выбора.

Я обрабатываю заполнение элементов, как только элемент управления вызывает событие Loaded, а затем задаю SelectedItemесли необходимо.

UserControl имеет свойство зависимостей SelectedItem, с которым я связываю свойство с NotifyOnDataError со значением true.

Свойство, когда оно модифицировано, вызывает PropertyChanged и ErrorsChanged с ожидаемым поведением из HasErrors иGetErrors (string).

В некоторых случаях средство регистрации ошибок по-прежнему остается несоответствующим, что в свойстве нет ошибки, а всплывающая подсказка, показывающая ошибку, пуста. Когда возникает эта проблема, я должен очистить SelectItem, установив свойство по ошибке, в результате чего обработчик ошибок останется таким, каким он должен быть в этот раз, но во всплывающей подсказке не будет отображаться ошибка, где он должен быть в этот раз, а затем выберите элемент из поля со списком. ,Тогда валидация элемента управления ведет себя как ожидалось.

Я сказал в некоторых обстоятельствах, потому что, если AdornerDecorator находится между родительским ContentControl (Window, GroupBox ...) и UserControl, шаблон ошибки ведет себя как ожидалось. Наличие AdornerDecorator в шаблоне ContentControl не решает проблему.

Я развернул github repo , где я повторил проблему.

Вот мои ViewModelsреализации.

А вот моя реализация UserControl.

Я ищу то, что я делаю неправильно, или, по крайней мере, способ заставить это работатьпостоянно без необходимости добавлять AdornerDecorator везде.

...