繁体   English   中英

WPF中AlternativeRow BackColor的异常行为

[英]Unexpected behavior of AlternativeRow BackColor in WPF

我正在使用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"/> 

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM