2010-08-03 18 views
6

Una delle colonne nel mio DataGrid contiene un Hyperlink in un TextBlock. Quando viene selezionata una riga, il collegamento ipertestuale viene visualizzato in blu su blu, quindi voglio cambiare il colore del testo in bianco. Come lo posso fare?Collegamento ipertestuale all'interno di un blocco testo

Il DataGrid assomiglia a questo:

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

Ho provato

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

e lo stesso codice con TextElement invece di TextBlock. Entrambi funzionano per altre colonne, ma non per questo con collegamento ipertestuale.

risposta

2

Usare la seguente dichiarazione per il link:

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

Questo rende il collegamento ipertestuale il colore corretto quando selezionato, ma rende anche più nero quando non è selezionato e io non voglio questo. – svick

+0

Estendi il tuo stile per soddisfare le tue esigenze – HCL

+0

Heh, questo non mi è venuto in mente. Sì, funziona ora, grazie. Sono ancora curioso di sapere se c'è un modo migliore per farlo, comunque. – svick

Problemi correlati