当wpf中的datagrid失去焦点后,选中行的颜色会变得很淡,几乎看不见。网上有人给出了解决方案:
<DataGrid Name="grid1" HorizontalAlignment="Left" Height="120" Margin="75,86,0,0" VerticalAlignment="Top" Width="282"> <DataGrid.Columns> <DataGridTextColumn Header="编号" Binding="{Binding compan.ID}"></DataGridTextColumn> <DataGridTextColumn Header="公司" Binding="{Binding CompanyName}"></DataGridTextColumn> <DataGridTextColumn Header="固定资产" Binding="{Binding FixedAssets}" Width ="*"></DataGridTextColumn> </DataGrid.Columns> <DataGrid.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Yellow"/> </DataGrid.Resources> </DataGrid>
来源: http://www.cnblogs.com/TaiYangXiManYouZhe/p/4495986.html
但我的grid是动态创建的,如何在代码里添加呢?写法如下:
注意Resources用于接收本地属性(即XML中的整个Resources段),缺省是空的。
m_gridCtrl.Resources.Add(SystemColors.InactiveSelectionHighlightBrushKey, new SolidColorBrush(Color.FromArgb(0xff, 0x33, 0x99, 0xff)));
m_gridCtrl.Resources.Add(SystemColors.InactiveSelectionHighlightTextBrushKey, new SolidColorBrush(System.Windows.Media.Colors.White));
这么写后还有问题,执行效果如下,可以发现grid的底部也变色了。
这不是我们需要的。因为需要只对grid行做处理,XML写法如下:
<DataGrid.Resources>
<Style TargetType="DataGridRow">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="DarkGray"/>
</Style.Resources>
</Style>
</DataGrid.Resources>
代码直接创建如下:
m_gridCtrl.RowStyle = new Style();
m_gridCtrl.RowStyle.Resources.Add(SystemColors.InactiveSelectionHighlightBrushKey, new SolidColorBrush(Color.FromArgb(0xff,0x33,0x99,0xff)));
m_gridCtrl.RowStyle.Resources.Add(SystemColors.InactiveSelectionHighlightTextBrushKey, new SolidColorBrush(System.Windows.Media.Colors.White));