我正在使用WPF DataGrid,其中一列需要在该行可编辑时显示“编辑”超链接-这由该行后台模型中的布尔标志指示。我可以使用DataGridTemplateColumn实现此目的-没有问题。然而,对整行的附加要求是在选择该行时不显示任何高亮(默认情况下为蓝色背景)。我已经通过定义DataGridCell样式来实现其他列的此要求,使其具有透明背景,例如:
<DataGridTextColumn
Header="Id"
Binding="{Binding Path=Id}"
HeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
CellStyle="{StaticResource DataGridCellStyle}" />
其中DataGridCellStyle定义如下:
<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="Transparent" />
...
</Style>
然而,所讨论的列是一个DataGridTemplateColumn,它没有提供可用于关闭选择高亮显示的“CellStyle”属性。因此,我的问题是如何在使用DataGridTemplateColumn时设置单元格样式?这是我实现该列的方式,它满足第一个要求(即如果行可编辑,则显示“编辑”超链接):
<DataGridTemplateColumn
Header="Actions"
HeaderStyle="{StaticResource CenterAlignedColumnHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Visibility="{Binding Path=Editable, Converter={StaticResource convVisibility}}"
Style="{StaticResource CenterAlignedElementStyle}">
<Hyperlink
Command="..."
CommandParameter="{Binding}">
<TextBlock Text="Edit" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
感谢您的选择。