DataGrid设置奇偶行背景颜色
1、首先我们在设计的时候,要先制作一个dataGrid的表格,然后填充数据,最起码,数据是要有的,不然也看不出什么效果出来。当然制作表格就直接使用
dataGrid控件就可以了。
<DataGrid AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeColumns="True" CanUserResizeRows="False" CanUserSortColumns="False"
Name="datagrid1" RowHeaderWidth="0" BorderBrush="Black" FontSize="15" IsReadOnly="True" >
<DataGrid.Columns>
<DataGridTextColumn Header="***" Binding="{Binding ***}
<DataGridTextColumn Header="***" Binding="{Binding ***}
<DataGridTextColumn Header="***" Binding="{Binding ***}
<DataGridTextColumn Header="***" Binding="{Binding ***}
<DataGridTextColumn Header="***" Binding="{Binding ***}
<DataGridTextColumn Header="***" Binding="{Binding ***}
<DataGridTextColumn Header="***" Binding="{Binding ***}
</DataGrid.Columns>
</DataGrid>

2、当然这里面的设计我没有做任何的色彩渲染,纯粹就是vs自带的格式和样式,这样设计出来的表格确实不怎么好看,影响审美观,而且线条的颜色也没有处理,所以我们既要处理颜色,还要处理样式。

3、针对这种情况,我们要分别进行样式设计,首先要设计的是网格线:
<Style TargetType="DataGrid">
<!--网格线颜色-->
<Setter Property="CanUserResizeColumns" Value="false"/>
<Setter Property="BorderBrush" Value="LightGray" />
<Setter Property="HorizontalGridLinesBrush">
<Setter.Value>
<SolidColorBrush Color="LightGray"/>
</Setter.Value>
</Setter>
<Setter Property="VerticalGridLinesBrush">
<Setter.Value>
<SolidColorBrush Color="LightGray"/>
</Setter.Value>
</Setter>
</Style>

4、然后是单元格的标题,也就是表头,因为表头也影响着美观,这里的颜色可以根据实际情况进行配色。
<Style TargetType="DataGridColumnHeader" >
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
<Setter Property="VerticalAlignment" Value="Center"></Setter>
<Setter Property="FontSize" Value="16" />
<Setter Property="BorderBrush" Value="#d6c79b" />
</Style>

5、接下来配置的就是隔行换色的重点了
<Style TargetType="DataGridRow">
<Setter Property="Height" Value="30"></Setter>
<Setter Property="VerticalAlignment" Value="Center"></Setter>
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
<Style.Triggers>
<!--隔行换色-->
<Trigger Property="AlternationIndex" Value="0" >
<Setter Property="Background" Value="LightGray" />
</Trigger>
<Trigger Property="AlternationIndex" Value="1" >
<Setter Property="Background" Value="#f2f2f2" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Gray"/>
<!--<Setter Property="Foreground" Value="White"/>-->
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>

6、当配置好了之后,我们可以来看看效果了,效果中,我们很明显看到了隔行显示的问题,此外,鼠标的移动也可以改变这一行的颜色,这样看起来确实要比之前美观很多,所以,在设计的时候,多用样式还是挺好的。
