如何阻止 DataGrid 行颜色改变?

How to stop DataGrid row color from changing?

我已经实现了代码来解决在 WPF DataGrid 中选择行时出现的双击问题。我在这里使用以下代码:.

<Style TargetType="DataGridCell">
     <Style.Triggers>
         <Trigger Property="IsMouseOver" Value="True">
             <Setter Property="IsEditing" Value="True" />
         </Trigger>
     </Style.Triggers>
 </Style>

行有交替的颜色。问题是当我将鼠标悬停在一行上时,在一列中,浅蓝色被白色取代。

除了这一个问题,上面的代码工作得很好。将鼠标悬停在一行上时如何阻止颜色变化?

我尝试了以下方法,但没有任何效果:

<Style TargetType="DataGridCell">
     <Style.Triggers>
         <Trigger Property="IsMouseOver" Value="True">
             <Setter Property="IsEditing" Value="True" />
             <Setter Property="Background" Value"AliceBlue" />
         </Trigger>
     </Style.Triggers>
 </Style>

问题是,当您将鼠标悬停在单元格上方时,单元格将显示其编辑样式。

对于 DataGridTextColumn 这意味着显示具有白色背景的 TextBox

您可以将样式设置为 <DataGridTextColumn.EditingElementStyle>,并将背景设置为 transparent

<DataGridTextColumn Header="Name" Binding="{Binding Name}" >
    <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="TextBox">
            <Setter Property="Background" Value="Transparent"></Setter>
            <Setter Property="BorderThickness" Value="0"></Setter>
        </Style>
    </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>

要获得白色背景,在实际编辑单元格时,您可以向 IsSelected 事件添加另一个触发器:

<Style TargetType="DataGridCell">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="IsEditing" Value="True" />
        </Trigger>

        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="White"/>
        </Trigger>

    </Style.Triggers>
</Style>

另一种选择是仅将 DataGridCell 样式应用于 CheckBoxColumns。对于其他 Column 类型,它不会有任何区别。