2010-10-24 45 views
3

如何在DataGrid中着色列如果我也想使用AlternatingRowBackground屬性? 我有一些想法,但它不工作:(。WPF DataGrid列交替着色

<de:DataGrid Name="dataGrid1" 
          AlternationCount="2" 
          AlternatingRowBackground="Salmon" 
          > 
        <de:DataGrid.Columns> 
         <de:DataGridTextColumn Binding="{Binding Path=Phrase}" 
               Header="Phrase"> 
          <de:DataGridTextColumn.ElementStyle> 
           <Style TargetType="{x:Type TextBlock}"> 
            <Style.Triggers> 
             <Trigger Property="ItemsControl.AlternationIndex" Value="0"> 
              <Setter Property="Background" Value="Green"></Setter> 
             </Trigger> 
             <Trigger Property="ItemsControl.AlternationIndex" Value="1"> 
              <Setter Property="Background" Value="Red"></Setter> 
             </Trigger> 

            </Style.Triggers> 
           </Style> 
          </de:DataGridTextColumn.ElementStyle> 
         </de:DataGridTextColumn> 
        </de:DataGrid.Columns> 
       </de:DataGrid> 

也許有人知道工作的解決方案?謝謝。

回答

0

你在錯誤的控制搜索AlternationIndex屬性,該屬性屬於DataGridRow。

<DataGrid ItemsSource="{Binding}" AlternationCount="2" AutoGenerateColumns="False" AlternatingRowBackground="Salmon"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding Path=Phrase}" Header="Phrase"> 
        <DataGridTextColumn.ElementStyle> 
         <Style TargetType="{x:Type TextBlock}"> 
          <Style.Triggers> 
           <DataTrigger Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="0"> 
            <Setter Property="Background" Value="Green"></Setter> 
           </DataTrigger> 
           <DataTrigger Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="1"> 
            <Setter Property="Background" Value="Red"></Setter> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </DataGridTextColumn.ElementStyle> 
       </DataGridTextColumn> 
      </DataGrid.Columns> 
      </DataGrid>