Я огляделся, но не могу найти конкретно свою проблему. Я знаю, что обработка «Ошибка» по умолчанию в WPF помещает «Украшение» вокруг элементов управления на случай, если возникнут какие-либо ошибки, основанные на правилах IDataErrorInfo или Validataion, не отвечающих данному элементу управления. Это все хорошо и прекрасно, однако с интерфейсом страницы с вкладками, если какие-либо элементы управления помечены как недействительные, они должным образом обведены красной рамкой. Однако, как только вы переходите с вкладки 1 на 2 и обратно на 1, все украшения исчезают (плохо). Об этом уже спрашивали, и решение было принято, но искали лучшую альтернативу.
Итак, я перешел к своему объявлению «Темы» и для элемента управления текстовым полем я просто сказал установить красный цвет всего фона элемента управления, а не только границы. Без какого-либо причудливого принудительного запуска через уведомление об изменении свойства, если я переключаюсь между страницами, красный фон всего текстового поля остается постоянным.
Теперь перейдем к управлению выпадающим списком. Для тех, кто настроил свой собственный или даже посмотрел версию элемента управления MS по умолчанию, на самом деле это сгруппированный беспорядок элементов управления, сеток, столбцов, кнопок и т. Д., Чтобы магия выпадающего списка работала. Вкратце...
ControlTemplate Сетка (два столбца, один для отображения текста выбранного, второй столбец для стрелки раскрывающегося списка) Граница, охватывающая оба столбца Путь (рисунок линии / глиф для раскрывающегося изображения для поля со списком)
ControlTemplate TargetType Текстовое поле (как часть всего набора выпадающих списков) Граница специально "PART_ContentHost"
ControlTemplate выпадающего списка кнопки переключения сетки со списком, отображающего список других триггеров.
Наконец, основное объявление ComboBox, созданное по шаблону вышеуказанных компонентов.
Во всяком случае, я не могу получить это. В области «Кнопка переключения» объявления со списком у меня есть триггер для изменения фона на ОЧЕВИДНЫЙ цвет для доказательства проверки работы триггера и в правильном месте в объявлениях ControlTemplate.
Итак, зная, что это правильное место в объявлениях со списком, я хочу заменить зеленый цвет фона красным, если есть ошибка с данными. Я ЗНАЮ, что общий «Validation.HasError» правильно запускается, как показывает собственный обработчик ошибок. Независимо от того, как/где в шаблоне я пытаюсь изменить цвет фона на красный, это НЕ работает. Я даже пытался использовать DataTriggers, используя конвертеры, пробуя несколько свойств, но, похоже, это не работает.
Какие-либо предложения? Это становится действительно раздражающим.