我正在使用Microsoft在本页提供的样式来设置DataGrid的样式。 我不会更改此样式,只剩下一行,如下所示,它启用了备用的行背景色。

<!--Style and template for the DataGrid.-->
    <Style TargetType="{x:Type DataGrid}">
        <Setter Property="AlternationCount" Value="2"/>
 ... and the rest of the style

我意识到这种风格非常奇怪。 当您向上/向下滚动数据网格几次后,您会看到混合的备用行后颜色! 如下面的图片:

混合替代底色

我期望在滚动之前是正确的浅色和深色行序列; 但是滚动后,所有内容都是随机混合的。 在应用这种样式之前,我在DataGrid定义中明确设置了替代行颜色,如下所示,这是我从未经历过的行为。

<DataGrid ItemsSource="{Binding Source={StaticResource itemsSource}}" AutoGenerateColumns="False" AlternatingRowBackground="#FF58C9FD" RowBackground="#00000000"/> 

有没有人建议我应该在哪里寻找问题?

===============>>#1 票数:1

这是WPF DataGrid上的一个已知的虚拟化问题。

这是一种解决方法 ,但是请注意,如果您在该DataGrid上处理大量数据,可能会导致严重的性能问题。

有对这种行为背后的机制很好地解释了这里

===============>>#2 票数:1 已采纳

加布里埃尔(Gabriel)提到,当您尝试为数据网格(或通常是任何项目集合)创建全新样式时,会出现此问题。

我尝试根据Gabriel的建议基于默认样式创建样式,如下所示:

<Style TargetType="{x:Type DataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
        <Setter Property="AlternationCount" Value="2"/>
        <Setter Property="AlternatingRowBackground" Value="OrangeRed"/>
 </Style>

我尝试通过这种样式覆盖所需的所有属性,并且效果很好。 也许MSDN提供的样式中存在一些技巧/调整(它可以在网上找到的大多数样式中重复使用)来解决此问题。 如果有人更新我们,我们仍然感激不尽。

同时,我建议您通过自定义设置覆盖默认样式,并避免使用任何全新样式。

  ask by Hamed translate from so

未解决问题?本站智能推荐:

2回复

如何在WPF中IsEditing = True时更改DataGridCell的背景

设置背景适用于DataGridCheckBoxColumn但不适用于DataGridTextColumn 。 我把它设置为资源中的单元格: 这个问题有什么解决方案吗?
1回复

在WPF数据网格中迭代行,然后将行值传递到方法中并相应地设置行样式

我有一个WPF数据网格,其中有一个数据表作为源。 datagrid包含一个不可见的列,其中包含rowID。 我需要做的是遍历datagird中的每一行,拉出rowID并将其传递给bool IsArchived( int rowID )方法。 如果此方法返回true,则我想以某种方式设置da
2回复

如果选择了行,则更改DataGrid中按钮的背景-WPF

我有一个datagrid,其中包含一个模板列,其中包含一些按钮。 选择行时,我需要这些按钮的颜色从黑色变为白色。 尽管我不确定如何从按钮设置器中到达“ DataGridRow.IsSelected”。 这是我尝试但没有起作用的方法: 谢谢,Yotam
2回复

WPF datagrid不同的样式取决于操作系统

我正在开发一个WinForms应用程序,该应用程序内部使用了一些WPF用户控件。 其中之一包含WPF DataGrid,我可以根据其运行的操作系统以不同的样式看到它。 在Win7 / Win8中,我以相同的方式看到它(Win 8中的上下文菜单选项比Win 7中的高度更高),但是在Wind
3回复

WPF DataGrid为ColumnWidth应用样式,*不起作用

我尝试全局应用DataGrid样式,如下所示: RowHeaderWidth的样式有效,但ColumnWidth的样式不起作用(DataGrid末尾有空列)。 当我在DataGrid中显式设置ColumnWidth="*" ,它工作(空列已经消失)。 我想知道我们是否能够在Sty
2回复

来自ItemSource的C#WPF DataGrid样式

如果要填充DataGrid,则可以添加它们以为Datagrid.ItemSource提供对象列表。 例如人物(姓名,年龄,...)或其他。 是否有办法通过仅使用Datagrid.ItemSource = List<Person>在对象(人)中放置更多(额外)信息来分别设置Da
2回复

WPF C#-列内容的对齐方式和样式(取决于内容)

我有3列的数据网格。 最后一列仅通过显示“✓”或“✗”来显示该行的数据集是启用还是禁用。 我想为最后一列设置样式,以使内容对齐方式居中,并且根据内容,“文本”应为绿色(对于“✓”)或红色(对于“✗”)。 那么我该如何实现呢? 如何根据“✓”和“✗”对单元格进行样式设置? 这是我用
1回复

wpf datagrid样式

我正在使用DataGrid在应用程序中打印发票,但看起来一点也不好,例如,我不喜欢纸上的滚动条,它在纸上不起作用,任何人都可以指出我的想法设置数据网格样式的正确方向? 现在,它看起来像这样 ,但是应该看起来像这样 ,好吧,不完全是,但是它看起来应该像一张桌子,我相信您已经明白了。
2回复

使WPF触发器使用任何属性

我使用Datagrid 。 在那里我放了一个像这样的Area列表: 现在我想根据Area的属性设置行的样式。 我如何引用Area.UseForGroups ? 编辑 我用DataTriggers尝试了以下但没有任何反应
1回复

WPF DataGridCell样式绑定问题

我在将Collection绑定到DataGrid时遇到一个奇怪的问题,在该行上选择行时,绑定似乎消失了(我有一个空单元格) 这是我的物品清单 ItemPoint对象定义为: 这是我的xaml: 如果现在显示数据网格,则一切正常……直到选择网格的任何单元格。 这