【问题标题】:Changing Hyperlink foreground without losing hover color在不丢失悬停颜色的情况下更改超链接前景
【发布时间】:2009-08-10 02:25:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wpf hyperlink


    【解决方案1】:

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

    【讨论】:

    • 确实如此——我尝试过类似的方法,但缺少 BasedOn。谢谢!
    • 大声笑我刚刚在谷歌上找到了这个答案,试图解决同样的问题。如果可以的话,我会投票给自己! :)
    • 我在没有任何设置器的情况下将它与 Style 标签一起使用,在这种情况下,超链接似乎没有考虑我在合并的单独资源字典文件中为它定义的自己的默认样式。很奇怪……
    • 当超链接在 RichTextBox 中时,这似乎不起作用,知道为什么吗?
    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多