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交替行着色的主要内容,如果未能解决你的问题,请参考以下文章