2016-04-24 3 views
0

Ich habe mehrere Dinge ausprobiert, aber der AlternationIndex im Trigger funktioniert überhaupt nicht.WPF DataGrid Alternating Row Hintergrund funktioniert nicht

Wenn ich

verwenden
<DataGrid x:Name="dataGrid" Margin="10,40,10,10" ItemsSource="{Binding}" 
    AlternatingRowBackground="DimGray" AlternationCount="1" 

es funktioniert, aber dann die IsMouseOver Auslöser wird auf den abwechselnden Reihen nicht.

So mache ich das, was jeder hier schreibt:

<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> 

Mit diesem Code der Aliceblue wird nicht angezeigt. Ich habe alles versucht, aber ich habe keine Ahnung, warum es nichts tut. AlternationIndex 0 funktioniert als Hintergrund aber nicht 1, 2 oder 3. Als Bindequelle habe ich eine DataTable verwendet Nur eine einfache Klasse mit einigen Methoden. Ich komme aus Java 1.6 SWT, dass fancy stuff

table.Columns.Add("Name", typeof(string)); 
table.Columns.Add("Description", typeof(string)); 
table.Columns.Add("Author", typeof(string));  
.... 
table.Rows.Add(name, description, author); 

Einstellung der Datacontext mit dem Rückgabewert aus dem oberen Code alles neu für mich ist

dataGrid.DataContext = dTable.getTable(); 

Hat jemand eine Idee, warum es doesn‘ t arbeiten .. es macht mich wirklich verrückt.

Antwort

1

Sie haben auch die Eigenschaft Alter des Datagrid gesetzt = „2“

+0

Oh man .. Umarmungen für Sie! : D Benutzte AlternationCount nur mit AlternatingRowBackground, aber nicht mit den Triggern. Vielen Dank :) –