默认情况下,当您在 WPF 中的 DataGrid 上选择一行时,该行上会显示蓝色突出显示。
对于我的 DataGrid,我有一列,每行都有一个复选框。选中一行后,应选中该框,并且不会显示分散注意力的蓝色突出显示。
有人知道一种方法吗?我已经尝试过这段代码,但我不知道如何实现我的复选框列
<DataGrid x:Name="dataGrid" BorderThickness="2" Margin="8,125,139,8" ColumnHeaderHeight="24" HorizontalGridLinesBrush="#FF009444" VerticalGridLinesBrush="#FF009444" BorderBrush="#FF009444" Background="White" RowHeight="20" FontFamily="Segoe UI Light" FontSize="14.8" AutoGenerateColumns="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" HeadersVisibility="Column" CanUserResizeRows="False" HorizontalScrollBarVisibility="Disabled" Padding="0">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="2" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="White" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="BorderBrush" Value="#FF009444" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="BorderBrush" Value="#FF009444" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FF39B54A" />
<Setter Property="BorderBrush" Value="#FF009444"/>
<Setter Property="BorderThickness" Value="0,0,2,2"/>
<Setter Property="Foreground" Value="White"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn x:Name="Column1" Header=" #" Binding="{Binding Name}" Width="20" IsReadOnly="True"/>
<DataGridTextColumn x:Name="Column2" Header=" Position" Binding="{Binding Name}" Width="90" IsReadOnly="True"/>
<DataGridTextColumn x:Name="Column3" Header=" Type" Binding="{Binding Name}" Width="71" IsReadOnly="True"/>
<DataGridTextColumn x:Name="Column4" Header=" Delay" Binding="{Binding Name}" Width="76" IsReadOnly="True"/>
<DataGridTemplateColumn x:Name="Column5" Header=" [ ]" Width="20">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Name}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn x:Name="Column6" IsReadOnly="True" Header="Description" Binding="{Binding Name}" Width="584"/>
</DataGrid.Columns>
</DataGrid>
最简单的方法是使用 DataGridCheckBoxColumn 并覆盖选择样式,如下所示,
<DataGrid Name="Grid" AutoGenerateColumns="False">
<DataGrid.Resources>
<ResourceDictionary>
<Style x:Key="{x:Type DataGridCell}" TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background" Value="{x:Null}" />
<Setter Property="BorderBrush" Value="{x:Null}" />
</Style>
</ResourceDictionary>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Bool property" Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}"></DataGridCheckBoxColumn>
<DataGridTextColumn Header="Text Property" Binding="{Binding .}"/>
</DataGrid.Columns>
</DataGrid>