在TextBlock中设置超链接样式

7

我的 DataGrid 中有一列是一个 TextBlock,其中包含一个 Hyperlink。当选择了一行时,超链接的颜色显示为蓝色在蓝色上面,因此我希望将其文本颜色更改为白色。我该如何做?

DataGrid 如下所示:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Title">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock TextWrapping="Wrap">
                        <Hyperlink NavigateUri="{Binding Url}">
                            <Run Text="{Binding Title}" />
                        </Hyperlink>
                    </TextBlock>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

我已经尝试过

<Style TargetType="DataGridCell">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="TextBlock.Foreground" Value="White" />
        </Trigger>
    </Style.Triggers>
</Style>

使用TextElement替代TextBlock的相同代码。这两个都适用于其他列,但不适用于此具有超链接的列。

1个回答

2
使用以下声明来创建链接:
<Run Text="{Binding Title}" 
     Foreground="{Binding 
         RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridCell},
                                        Path=Foreground}"/> 

这会使超链接在被选中时显示正确的颜色,但也会在未被选中时变成黑色,而我不想要这样。 - svick
将您的风格扩展以适应您的需求。 - HCL
嘿,我没想到那个。是的,现在它可以工作了,谢谢。不过我还是很好奇是否有更好的方法来做到这一点。 - svick
你能否发布XAML以展示您如何扩展样式呢? - Mal Ross
@Mal Ross:抱歉,我目前对这个主题的了解不够深入,无法给您提供快速的示例。建议您发布一个新问题。 - HCL
@HCL:没问题;我其实是在向svick提问,但我已经发布了我的问题 - Mal Ross

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接