#c# #wpf #hyperlink #datagrid
#c# #wpf #гиперссылка #datagrid
Вопрос:
У меня есть приложение WPF.
Я использую datagrid.
Внутри одного из столбцов я использую гиперссылку. Стиль устанавливает для этой ссылки зеленый цвет.
Когда я выделяю строку в datagrid, предварительный цвет гиперссылки не становится белым. он остается зеленым и как таковой не легко читается / просматривается.
Я пытался добавить триггер, но, похоже, нет свойства / события для 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>
Комментарии:
1. Вы пытались изменить цвет гиперссылки на белый в выбранной строке?
2. @mww ПРИВЕТ, и где и как я мог бы это сделать, пожалуйста?
Ответ №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>