Я пытаюсь установить цвет переднего плана
в гиперссылке
с помощью объекта Style
в ресурсах предка
, но это не имеет никакого эффекта. Я даже использовал совет BasedOn
из Изменение переднего плана гиперссылки без потери цвета при наведении , но это не имело никакого значения - я все равно получаю синюю гиперссылку, которая становится красной при наведении.
Вот. XAML для моих элементов управления, включая ItemsControl
, элементы которого отображаются с помощью гиперссылки:
Data import errors
И элементы в ItemsControl
выбирают следующие DataTemplate
:
Также стоит отметить, что я не Я не хочу просто установить разные цвета прямо на гиперссылке
в DataTemplate
. Это связано с тем, что шаблон будет использоваться рядом различных объектов ItemsControl
, большинство из которых будут на белом фоне и поэтому могут использовать стандартные цвета гиперссылок. (Обратите внимание, что тот, что в приведенном выше XAML, имеет красный фон.)
Короче говоря, я не хочу, чтобы DataTemplate
знал что-либо об элементе управления, в котором он используется . Стили для элементов управления шаблона должны просто отфильтровываться до него.
Итак ... может ли кто-нибудь мне сказать, почему стиль не фильтруется и что я могу сделать, чтобы это исправить?
Спасибо.
Обновление:
Поскольку я не смог заставить ответ Павла работать в моем производственном приложении, я С тех пор мы попробовали это в отдельном тестовом приложении. Это приложение WinForms, основная форма которого не содержит ничего, кроме ElementHost
, который сам содержит простой пользовательский элемент управления WPF. Вот его XAML:
Data import errors
Как указано выше, это генерирует InvalidOperationException
, в котором говорится: «Может основываться только на Style с целевым типом, который является базовым типом IFrameworkInputElement».
Это можно исправить поместив TargetType = "Hyperlink"
в определение стиля
непосредственно внутри элемента UserControl.Resources
. Однако, пока сообщения отображаются, в их части ссылки по-прежнему используется стиль синей гиперссылки по умолчанию:
Короче говоря, это не работает, поэтому я приветствую любые другие предложения / исправления. : (
Обновление 2:
Благодаря альтернативному решению от Павла теперь работает. :)