【问题标题】:wpf datagrid alternate row coloringwpf datagrid交替行着色
【发布时间】:2011-06-15 03:00:11
【问题描述】:

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

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

【问题讨论】:

    标签: wpf xaml wpf-controls styles wpfdatagrid


    【解决方案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>
    

    【讨论】:

    • 谢谢,我用这个,因为我想在满足条件时用我自己的替换颜色覆盖:
    • 为此目的有一个内置属性:“AlternatingRowBackground”,您可以将“Background”设置为一种颜色,将“AlternatingRowBackground”设置为第二种颜色,无需此触发器。跨度>
    【解决方案2】:

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

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

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

    【讨论】:

    • 我四处寻找,发现了这个,就像“啊,是的!”。 :) 不过谢谢!..
    【解决方案3】:

    尝试像这样设置交替背景:

      AlternationCount="2" AlternatingRowBackground="Bisque"
    

    【讨论】:

    • 这是我遇到的最好的解决方案,因为它很简短。
    【解决方案4】:

    试试这个

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

    【讨论】:

    • @Th3G33k 已经提出了这个答案。
    【解决方案5】:

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

    【讨论】:

    • 感谢您扩展答案。这也是我要找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2010-09-06
    相关资源
    最近更新 更多