WPF DataGrid-如何用复选框选择替换蓝行突出显示?
默认情况下,当您在WPF中的DataGrid上选择一行时,该行上会显示一个蓝色高亮显示 对于我的DataGrid,我有一列,每行有一个复选框。当选择一行时,应选中该框,并且不会显示分散注意力的蓝色突出显示 有人知道怎么做吗? 我已经尝试过这段代码,但我不知道如何实现我的复选框列WPF DataGrid-如何用复选框选择替换蓝行突出显示?,wpf,xaml,wpfdatagrid,Wpf,Xaml,Wpfdatagrid,默认情况下,当您在WPF中的DataGrid上选择一行时,该行上会显示一个蓝色高亮显示 对于我的DataGrid,我有一列,每行有一个复选框。当选择一行时,应选中该框,并且不会显示分散注意力的蓝色突出显示 有人知道怎么做吗? 我已经尝试过这段代码,但我不知道如何实现我的复选框列 <DataGrid x:Name="dataGrid" BorderThickness="2" Margin="8,125,139,8" ColumnHeaderHeight="24" Horizontal
<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>
您可以发布您尝试过的代码吗?因此,您所要做的就是,当行ISSELECT=True时,然后在复选框上IsChecked=True?同时也抑制gridcell样式高亮显示?只是确保我正确理解了意图。是的,我希望复选框代替蓝色突出显示。请通过文本而不是图像发布完整的数据网格XAML。上面的图片信息太少。编辑过的Sakura,这就是整个数据网格。我已经添加了我想要的列以及一些单元格和行样式。我还添加了复选框列并抑制了默认的选择高亮显示。在这个阶段,我要问的是如何实现当一行的复选框被选中时,该行被选中。哇,看起来效果不错。但是,如果我尝试取消选中某个框,它将崩溃,并显示以下消息:PresentationFramework.dll中出现“System.InvalidOperationException”类型的未处理异常。其他信息:此视图不允许使用“EditItem”。