Изменение переднего плана гиперссылки без потери цвета наведения
Я пишу приложение WPF, и я хочу, чтобы некоторые из моих гиперссылок были голубыми по умолчанию, а другие - зелеными. Нет проблем - я могу просто установить Foreground
:
<TextBlock><Hyperlink Foreground="#0C0">Mark as done</Hyperlink></TextBlock>
Проблема в том, что когда я это делаю, эффект наведения исчезает. В обычной гиперссылке, когда я перемещаю мышь по ссылке, она становится красной, и когда я отворачиваю мышь, она возвращается к синему. Но в гиперссылке с назначенным свойством Foreground всегда этот цвет - красный-на-hover полностью подавлен.
Как я могу изменить цвет гиперссылки, не теряя поведение и цвет по умолчанию?
Ответы
Ответ 1
Настройка непосредственно переднего плана (как вы это сделали) не работает, а установка его в стиле тоже не работает, если только вы не "вывели" этот стиль из стиля Hyperlink по умолчанию (который должен включать триггер OnMouseOver). Итак, это работает:
<TextBlock>
<Hyperlink>
<Hyperlink.Style>
<Style TargetType="Hyperlink"
BasedOn="{StaticResource {x:Type Hyperlink}}">
<Setter Property="Foreground" Value="#0C0"/>
</Style>
</Hyperlink.Style>
Mark as done
</Hyperlink>
</TextBlock>
Извлечение этого стиля обратно в ресурсы Window и ссылка на него с помощью ключа, вероятно, сделает для более читаемого XAML, но приведенный выше код выполнит задание.
Ответ 2
Вы должны создать свою гиперссылку следующим образом
<TextBlock Width="Auto" HorizontalAlignment="Center">
<Hyperlink Click="ForgotPassword_Clicked">
<TextBlock Text="Forgot Password?"/>
</Hyperlink>
</TextBlock>
И тогда этот стиль должен работать на вас
<Style TargetType="{x:Type Hyperlink}">
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Foreground" Value="Blue" />
<Setter Property="TextBlock.TextDecorations" Value="{x:Null}" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red" />
<Setter Property="TextBlock.TextDecorations" Value="Underline" />
</Trigger>
</Style.Triggers>
</Style>