2011-01-25 51 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>