我有一个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>
答案 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>