在这个例子中,AlternationCount
设置为 2,这意味着 DataGrid 将以两行一组进行交替。然后,我们使用两个 Trigger
,一个用于设置奇数行(AlternationIndex
为 0)的背景色为浅灰色,另一个用于设置偶数行(AlternationIndex
为 1)的背景色为白色。
这种方法的好处是不需要创建自定义转换器,直接在 XAML 中通过样式和触发器即可实现奇偶行不同颜色的效果。
使用 Trigger
和 AlternationIndex
、AlternationCount
属性是另一种实现 DataGrid 奇偶行不同颜色的简洁方法。以下是在 XAML 中设置这种方式的示例
<Style x:Key="greyDataGridRowStyle" TargetType="DataGridRow">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<!--<EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick"/>-->
<Style.Triggers>
<Trigger Property="AlternationIndex" Value="0">
<Setter Property="Background" Value="#FFFFFF"/>
</Trigger>
<Trigger Property="AlternationIndex" Value="1">
<Setter Property="Background" Value="#f0f0f0"/>
</Trigger>
<!-- IsMouseOver背景颜色 -->
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightGray"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#FFE0C0" />
</Trigger>
</Style.Triggers>
</Style>
<Grid>
<DataGrid
CanUserAddRows="False"
AutoGenerateColumns="False"
Background="White"
ColumnHeaderHeight="40"
RowHeight="40"
HeadersVisibility="Column"
CanUserResizeColumns="False"
CanUserResizeRows="False"
FontSize="14"
IsReadOnly="True"
CanUserSortColumns="False"
GridLinesVisibility="None"
BorderThickness="0"
AlternationCount="2"
RowStyle="{DynamicResource greyDataGridRowStyle}"
ItemsSource="{Binding ListGrid">
<DataGrid.Columns>
<DataGridTextColumn Header="X号" Binding="{Binding ID1}" Width="100" CellStyle="{DynamicResource CellCenterSytle}"/>
<DataGridTextColumn Header="X号" Binding="{Binding ID2}" Width="150" CellStyle="{DynamicResource CellCenterSytle}"/>
<DataGridTextColumn Header="X号" Binding="{Binding ID3}" Width="150" CellStyle="{DynamicResource CellCenterSytle}" />
</DataGrid.Columns>
</DataGrid>
</Grid>