WPF的DataGrid中间出现固定灰色横线不随滚动移动问题求助
解决方案
你遇到的是WPF DataGrid常见的绘制残留问题,一般由高DPI像素对齐、默认控件样式残留边框、虚拟化滚动绘制bug三类原因导致,可按以下顺序尝试修复:
- 首先给DataGrid添加像素对齐属性,解决半像素绘制残留:
给你的DataGrid节点添加两个属性:UseLayoutRounding="True" SnapsToDevicePixels="True" - 补充行样式清空默认行边框:
你目前仅清空了单元格的边框样式,DataGridRow本身还有默认边框配置,在DataGrid节点下添加如下RowStyle即可:
同时可以额外添加两个网格线属性做双重保险:<DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="BorderThickness" Value="0"/> <Setter Property="FocusVisualStyle" Value="{x:Null}"/> </Style> </DataGrid.RowStyle>HorizontalGridLinesBrush="Transparent" VerticalGridLinesBrush="Transparent" - 排查虚拟化滚动绘制bug:
如果以上方案无效,可以给DataGrid添加EnableRowVirtualization="False"测试,如果横线消失说明是行虚拟化的绘制问题。如果你的数据量不大可以直接关闭虚拟化使用,如果数据量较大需要保留虚拟化,建议将项目从停止支持的.NET 5升级到.NET 6或更高版本的LTS版本,后续.NET版本修复了大量WPF相关的绘制类bug。
内容的提问来源于stack exchange,提问作者Keb
相关产品推荐
相关产品推荐

