WPF DataGrid交替行背景不起作用

时间:2016-04-24 22:43:02

标签: c# wpf xaml datagrid

我尝试了几件事,但触发器中的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();

有谁知道它为什么不起作用......它真的让我疯狂。

1 个答案:

答案 0 :(得分:1)

您还必须设置DataGrid的属性AlternationCount =“2”