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 ***}" Width="*" /> <DataGridTextColumn Header="***" Binding="{Binding ***}" Width="*" /> <DataGridTextColumn Header="***" Binding="{Binding ***}" Width="*" /> <DataGridTextColumn Header="***" Binding="{Binding ***}" Width="*" /> <DataGridTextColumn Header="***" Binding="{Binding ***}" Width="*" /> <DataGridTextColumn Header="***" Binding="{Binding ***}" Width="*" /> <DataGridTextColumn Header="***" Binding="{Binding ***}" Width="*" /> </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、当配置好了之后,我们可以来看看效果了,效果中,我们很明显看到了隔行显示的问题,此外,鼠标的移动也可以改变这一行的颜色,这样看起来确实要比之前美观很多,所以,在设计的时候,多用样式还是挺好的。