如何阻止 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 类型,它不会有任何区别。
我已经实现了代码来解决在 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 类型,它不会有任何区别。