我在WPF DataGrid中选择行时实现了代码以解决双击问题。我在这里使用以下代码:https://stackoverflow.com/a/5857908/40106。
<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>
答案 0 :(得分:1)
问题是,当您将鼠标悬停在单元格上方时,单元格将显示它的编辑样式。
对于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。对于其他列类型,它无论如何都不会产生任何影响。