2011-01-25 52 views
35

我已经尝试了这个方法..没有运气..WPF数据网格备用行着色

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

回答

34

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

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

,你应该额外检查前景属性是否是用于在DataGridRow任何控制。尝试设置Background属性来测试交替的东西。

+1

我四处搜寻,发现了这个,就像是“啊,是的!”。 :)谢谢,但.. – 2011-01-25 11:21:42

33

最后,这是我最终用于一般设置交替行颜色。

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

谢谢,我用这个,因为我希望当条件符合时用我自己的替代颜色覆盖: – rosta 2018-01-06 12:31:42

17

尝试设置交替背景是这样的:

AlternationCount="2" AlternatingRowBackground="Bisque" 
+0

这是我遇到的最好的解决方案,因为它很短。 – Vectoria 2016-11-16 14:06:47

+0

这应该被标记为正确的答案 – 2016-11-23 13:51:51

0

试试这个

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

最后,我用的罗宾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>