我尝试了几件事,但触发器中的AlternationIndex根本不起作用。
如果我使用
<DataGrid x:Name="dataGrid" Margin="10,40,10,10" ItemsSource="{Binding}"
AlternatingRowBackground="DimGray" AlternationCount="1"
它可以工作,但IsMouseOver Trigger不会对交替的行进行处理。
所以我做的每个人都写在这里:
<Style x:Key="DataGridRowStyle" TargetType="{x:Type DataGridRow}">
<Setter Property="Height" Value="22"/>
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="#FF574F4F"/>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="AliceBlue"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="#FF8B1515" />
</Trigger>
</Style.Triggers>
...
...
<DataGrid x:Name="dataGrid" Margin="10,40,10,10" ItemsSource="{Binding}" IsReadOnly="True"
ColumnHeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
RowHeaderStyle="{StaticResource DataGridRowHeaderStyle}"
CellStyle="{StaticResource DataGridCellStyle}"
RowStyle="{StaticResource DataGridRowStyle}"....
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
<DataGridTextColumn Header="Author" Binding="{Binding Author}"/>
</DataGrid.Columns>
使用该代码,AliceBlue不会出现。尝试了一切,但我不知道为什么它什么都不做。 AlternationIndex 0用作背景但不是1,2或3。 作为绑定源,我使用了DataTable 只是一个简单的类与一些方法。我来自Java 1.6 SWT,那些花哨的东西对我来说都是新手
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Description", typeof(string));
table.Columns.Add("Author", typeof(string));
....
table.Rows.Add(name, description, author );
使用高位代码
的返回值设置dataContext dataGrid.DataContext = dTable.getTable();
有谁知道它为什么不起作用......它真的让我疯狂。
答案 0 :(得分:1)
您还必须设置DataGrid的属性AlternationCount =“2”