突出显示时在datagrid中设置超链接颜色

时间:2016-10-12 11:42:54

标签: c# wpf hyperlink datagrid

我有一个WPF应用程序。

我使用datagrid。

在其中一个列中,我正在使用超链接。该样式将此链接设置为绿色。

当我在数据网格中突出显示一行时,超链接的前景颜色不会变为白色。它仍然是绿色的,因此不容易阅读/看到。

我试图添加一个triiger,但似乎没有hightlighted的属性/事件 - 只有isMouseOver。

这是我的网格:

    <DataGrid 
            <DataGrid.Columns>
                <DataGridTextColumn Header="Work Item" Width="*" IsReadOnly="True" Binding="{Binding Description}" />
                <DataGridTemplateColumn Header="">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock>
                                <Hyperlink Style="{StaticResource Field_Hyperlink}">Remove</Hyperlink>
                            </TextBlock>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>                   
        </DataGrid.Columns>
    </DataGrid>

和我的风格:

    <Style TargetType="Hyperlink"  x:Key="Field_Hyperlink" >
        <Setter Property="Foreground" Value="DarkGreen"/>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Foreground" Value="White"/>
            </Trigger>
        </Style.Triggers>
    </Style>

1 个答案:

答案 0 :(得分:1)

你的相对来源需要是DataGridRow,你去:

  <Style TargetType="Hyperlink" x:Key="Field_Hyperlink">
        <Setter Property="Foreground" Value="DarkGreen"></Setter>
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsSelected, 
         RelativeSource= {RelativeSource 
                            AncestorType={x:Type DataGridRow}}}" 
         Value="True">
                <Setter Property="Foreground" Value="White" />
            </DataTrigger>
        </Style.Triggers>
    </Style>