Как распространить стили на гиперссылки внутри DataTemplate?

Я пытаюсь установить цвет переднего плана в гиперссылке с помощью объекта 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 . Однако, пока сообщения отображаются, в их части ссылки по-прежнему используется стиль синей гиперссылки по умолчанию:

Blue hyperlinks persist

Короче говоря, это не работает, поэтому я приветствую любые другие предложения / исправления. : (

Обновление 2:
Благодаря альтернативному решению от Павла теперь работает. :)

7
задан Community 23 May 2017 в 12:19
поделиться