WPF 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

默认情况下,当您在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>


您可以发布您尝试过的代码吗?因此,您所要做的就是,当行ISSELECT=True时,然后在复选框上IsChecked=True?同时也抑制gridcell样式高亮显示?只是确保我正确理解了意图。是的,我希望复选框代替蓝色突出显示。请通过文本而不是图像发布完整的数据网格XAML。上面的图片信息太少。编辑过的Sakura,这就是整个数据网格。我已经添加了我想要的列以及一些单元格和行样式。我还添加了复选框列并抑制了默认的选择高亮显示。在这个阶段,我要问的是如何实现当一行的复选框被选中时,该行被选中。哇,看起来效果不错。但是,如果我尝试取消选中某个框,它将崩溃,并显示以下消息:PresentationFramework.dll中出现“System.InvalidOperationException”类型的未处理异常。其他信息:此视图不允许使用“EditItem”。