Стилизация гиперссылки внутри текстового блока - PullRequest
7 голосов
/ 04 августа 2010

Один из столбцов в моем 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. Оба работают для других столбцов, но не для этого с гиперссылкой.

1 Ответ

2 голосов
/ 04 августа 2010

Используйте следующую декларацию для ссылки:

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