wpf - 在不丢失悬停颜色的情况下更改超链接前景

标签 wpf hyperlink

我正在编写一个 WPF 应用程序,我希望我的一些超链接默认为蓝色,而其他超链接为绿色。没问题——我可以设置 Foreground :

<TextBlock><Hyperlink Foreground="#0C0">Mark as done</Hyperlink></TextBlock>

问题是,当我这样做时,悬停效果消失了。在普通的超链接中,当我将鼠标移到链接上时,它会变成红色,而当我将鼠标移开时,它会变回蓝色。但是在分配了 Foreground 属性的超链接中,它始终是那种颜色——悬停时的红色完全被抑制。

如何在不丢失默认悬停行为和颜色的情况下更改超链接的颜色?

最佳答案

直接设置前景(如您所做的那样)不起作用,并且在样式中设置它也不起作用,除非您从默认超链接样式(必须包括 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 更具可读性,但上面的代码可以完成这项工作。

关于wpf - 在不丢失悬停颜色的情况下更改超链接前景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1252889/

相关文章:

objective-c - iOS UIWebView拦截链接点击

c# - WPF: "edit"图像并保存

c# - 生成每周日期

c# - DispatcherTimer 在更新 UI 时每分钟变慢

node.js - 链接到其他 Jade 文件

c++ - 对 C++ 中的非纯虚类感到困惑,它们有什么用?

c# - ListCollectionView分组已分组的项目

c# - WPF。列表框。如何将所选项目的最大值限制为 2?

c++ - 架构 x86_64 : Compiling problems 的 undefined symbol

javascript - 链接导致刷新