2010-08-03 19 views
6

Una de las columnas en mi DataGrid contiene un Hyperlink en un TextBlock. Cuando se selecciona una fila, el hipervínculo se muestra en azul sobre azul, por lo que quiero cambiar el color del texto a blanco. ¿Cómo puedo hacer eso?Estilo hipervínculo dentro de un TextBlock

El DataGrid se parece a esto:

<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> 

He intentado

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

y el mismo código con TextElement en lugar de TextBlock. Ambos funcionan para otras columnas, pero no para este con hipervínculo.

Respuesta

2

Usar la siguiente declaración para el enlace:

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

Esto hace que el hipervínculo el color correcto cuando se selecciona, pero también hace que sea negro cuando no está seleccionado y yo no quiero eso. – svick

+0

Amplíe su estilo para adaptarse a sus necesidades – HCL

+0

Heh, eso no se me ocurrió. Sí, funciona ahora, gracias. Todavía tengo curiosidad de saber si hay una mejor manera de hacerlo. – svick

Cuestiones relacionadas