我的WPF项目中的同一窗口上有多个DataGrid控件。当我单击网格中的一行时,它会突出显示。当我单击另一个网格中的一行时,该行突出显示,并且第一个网格中的行变得非常模糊。如何设计此窗口,以便每个网格可以同时显示所选行的突出显示?我的项目是在.NET 4.0中构建的,因此InactiveSelectionHighlightBrushKey似乎不起作用。我正在使用下面的代码,它基本上有效,除非我单击不同的网格时,前一个网格将行文本颜色更改为黑色而不是白色。我尝试将ControlTextBrushKey设置为White,但这使得网格中的每一行变为白色意味着未选择的行,因为隐藏因为背景也是白色的。有没有更优雅的方法来创建用户控件或继承DataGrid类,因为我需要在项目中多次插入此代码。
<DataGrid Name="dgStores" >
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{x:Static Colors.DodgerBlue}"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{x:Static Colors.DodgerBlue}"/>
</DataGrid.Resources>
</DataGrid>
答案 0 :(得分:1)
使用Style.Triggers为DataGridCell设置IsSelected颜色。
<Window.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{x:Static SystemColors.HighlightBrush}"></Setter>
<Setter Property="Foreground" Value="{x:Static SystemColors.HighlightTextBrush}"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
答案 1 :(得分:0)
试试这个:
<DataGrid ItemsSource="{Binding Items}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="White" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Blue"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>