首页 文章

wpf datagrid交替行着色

提问于
浏览
39

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

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

  • 36

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

    AlternationCount="2" AlternatingRowBackground="Bisque"
    
  • 34

    试试这个

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

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

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

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

  • 1

    最后,这是我最终用于一般设置备用行颜色的内容 .

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

    最后我使用了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>
    

相关问题