当DataGrid失去焦点时,如何设置WPF DataGrid的样式以更改所选行的颜色?
我在行选择模式中使用DataGrid(即SelectionUnit="FullRow").我只想删除当用户突出显示一行时为当前单元格放置的边框,以便进行真正的全行选择(并且不选择单元格级别).我不介意网格保持当前单元格的概念,我只想删除那个讨厌的当前单元格边界,可能是通过改变当前单元格的样式.最简单的方法是什么?
我看到很多关于如何在DataGrid中为Selected行设置样式的示例,例如:
我可以禁用选定的行样式吗?我不想要覆盖选择行更改的每一件事.只是不希望任何明显的变化.要比创建模板更简单.
要么..
禁用选择行,如果这更容易..但从浏览这个看似hacky的论坛
我在Windows 7上使用Visual Studio 2012.我需要知道为什么Grid的选定行的以下样式不适用于背景和前景色,但对于BorderBrush和BorderThickness等其他属性的效果非常好?虽然我可以看到它们在鼠标悬停在网格行上时发生变化
<Style x:Key="gridRowStyle" TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="PeachPuff"/>
<Setter Property="Foreground" Value="BlueViolet"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="PeachPuff"/>
<Setter Property="Foreground" Value="BlueViolet"/>
<Setter Property="BorderBrush" Value="BlueViolet" />
<Setter Property="BorderThickness" Value="2" />
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
这是我在网格上使用的方式.
<DataGrid RowStyle="{StaticResource gridRowStyle}">
Run Code Online (Sandbox Code Playgroud)
我强调要知道"为什么"而不是解决问题,因为我已经有问题的解决方案,如果我使用网格单元格样式而不是像下面的rowstyle:
<Style x:Key="gridCellStyle" TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="PeachPuff"/>
<Setter Property="Foreground" Value="BlueViolet"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)