2010-08-03 41 views
6

我的DataGrid中的一列包含中的Hyperlink。当选中一行时,超链接显示为蓝色,因此我想将它的文本颜色更改为白色。我怎样才能做到这一点?在TextBlock内建立超链接

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相同的代码。两者都适用于其他列,但不适用于超链接。

回答

2

使用下面声明的链接:

<Run Text="{Binding Title}" Foreground="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGridCell},Path=Foreground}"/> 
+0

这使得超链接正确的色彩选择时,也使得黑色未选中时,我不希望出现这种情况。 – svick 2010-08-03 21:38:58

+0

扩展您的款式以符合您的要求 – HCL 2010-08-03 22:21:28

+0

嘿,那不会发生在我身上。是的,现在有用,谢谢。不过,我仍然很好奇是否有更好的方法来做到这一点。 – svick 2010-08-03 22:49:08