wpf datagrid交替行着色

Posted

技术标签:

【中文标题】wpf datagrid交替行着色【英文标题】:wpf datagrid alternate row coloring 【发布时间】: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>

【问题讨论】:

【参考方案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>

以上是关于wpf datagrid交替行着色的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF Datagrid 中为网格线着色

WPF Datagrid 模板列编辑事件和交替列颜色

WPF关闭datagrid插入行

wpf datagrid 怎么增加数据行

wpf datagrid怎么得到焦点?用datagrid.focus()不行

wpf datagrid绑定了数据 如果选中多行中怎么获取选中行的某列的值