wpf datagrid交替行着色

时间:2011-01-25 10:56:54

标签: wpf xaml wpf-controls styles wpfdatagrid

我尝试过这种方法..没有运气..

 <Style TargetType="{x:Type DataGridRow}">
  <Style.Triggers>
      <Trigger Property="ItemsControl.AlternationIndex" Value="0">
          <Setter Property="Foreground" Value="Red" />
     </Trigger>
  </Style.Triggers>
</Style>

有没有办法获得行索引? 我甚至试过

<DataTrigger Binding="{Binding AlternationIndex}" Value="0">
    <Setter Property="Foreground" Value="Green"></Setter>
</DataTrigger>

5 个答案:

答案 0 :(得分:36)

最后,这是我最终设置的替代行颜色。

<Style TargetType="{x:Type DataGrid}">
    <Setter Property="Background" Value="#FFF" />
    <Setter Property="AlternationCount" Value="2" />
</Style>

 <Style TargetType="{x:Type DataGridRow}">
    <Style.Triggers>
        <Trigger Property="ItemsControl.AlternationIndex" Value="0">
            <Setter Property="Background" Value="#CCC"></Setter>
        </Trigger>
        <Trigger Property="ItemsControl.AlternationIndex" Value="1">
            <Setter Property="Background" Value="#EEE"></Setter>
        </Trigger>
    </Style.Triggers>
</Style>

答案 1 :(得分:34)

除非已经完成,否则必须设置DataGrid的AlternationCount属性:

<DataGrid AlternationCount="2"
          ... />

您还应检查Foreground属性是否用于DataGridRow中的任何Control。尝试设置Background属性以测试交替的东西。

答案 2 :(得分:27)

尝试设置交替背景,如下所示:

index.js

答案 3 :(得分:1)

试试这个

  <DataGrid AlternationCount="2"
            AlternatingRowBackground="Salmon" ........

答案 4 :(得分:0)

最后我使用了Robin Maben和Th3G33k解决方案的组合,因为当我满足某些条件时,我希望交替颜色可以覆盖我自己的颜色。 谢谢两位。

<DataGrid x:Name="gridCustomerOrderItems" HorizontalAlignment="Stretch" 
                  VerticalAlignment="Stretch" AutoGenerateColumns="False"
                  AlternationCount="2"
                  IsReadOnly="True" CanUserReorderColumns="True"
                      ScrollViewer.CanContentScroll="True"
                      ScrollViewer.VerticalScrollBarVisibility="Auto"
                      ScrollViewer.HorizontalScrollBarVisibility="Auto">

                <DataGrid.RowStyle>
                    <Style TargetType="DataGridRow">
                        <Style.Triggers>
                            <!--first alteraniting colour-->
                            <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                                <Setter Property="Background" Value="#EEE"></Setter>
                            </Trigger>
                            <!--then override with my own colour-->
                            <DataTrigger Binding="{Binding InvoiceSet}" Value="True">
                                <Setter Property="Background" Value="Green"></Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.RowStyle>