You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调整窗口大小时WPF DataGrid出现异常竖线问题求助

WPF DataGrid 窗口调整时出现异常白色竖线问题

我用以下XAML实现WPF DataGrid:

<DataGrid Name="DataGridBids" 
          VerticalAlignment="Stretch" 
          HorizontalAlignment="Stretch" 
          HeadersVisibility="Column"
          Background="#0d4338"
          CanUserAddRows="False"
          CanUserDeleteRows="False"
          CanUserReorderColumns="False"
          ItemsSource="{Binding Bids}"
          AutoGenerateColumns="False"
          IsReadOnly="True"
          IsManipulationEnabled="False"
          HorizontalScrollBarVisibility="Disabled"
          VerticalScrollBarVisibility="Disabled"
          GridLinesVisibility="None"
          Margin="0,0,0,0"
          BorderThickness="0">

    <DataGrid.Resources>
        <Style TargetType="DataGridCell">
            <Setter Property="TextBlock.TextAlignment" Value="Center"/>
            <Setter Property="Background" Value="#0d4338"/>
            <Setter Property="Foreground" Value="#11b376"/>
            <Setter Property="BorderThickness" Value="0,0,0,0"/>
        </Style>
    </DataGrid.Resources>

    <DataGrid.Columns>
        <DataGridTextColumn Header="Agent" Width="*"  Binding="{Binding Agent}"/>
        <DataGridTextColumn Header="Quantity" Width="*" Binding="{Binding Quantity}"/>
        <DataGridTextColumn Header="Buy" Width="*" Binding="{Binding Price, StringFormat='N2'}"/>
    </DataGrid.Columns>

</DataGrid>

初始打开时显示正常:
初始正常显示

但调整窗口大小时,会频繁出现异常白色竖线(并非每次都出现),且仅出现在第二列和第三列之间:
调整窗口后出现白色竖线

修复方案

  1. 统一单元格边框颜色
    即使设置了BorderThickness=0,布局计算的像素误差仍可能露出边框。将单元格边框颜色设为与背景一致,抵消视觉异常:

    <Style TargetType="DataGridCell">
        <!-- 原有Setter -->
        <Setter Property="BorderBrush" Value="#0d4338"/>
    </Style>
    
  2. 重置列头样式
    竖线也可能来自列头的边框渲染,给列头添加统一样式:

    <DataGrid.Resources>
        <!-- 原有DataGridCell样式 -->
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Background" Value="#0d4338"/>
            <Setter Property="Foreground" Value="#11b376"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="BorderBrush" Value="#0d4338"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
        </Style>
    </DataGrid.Resources>
    
  3. 启用像素对齐
    开启SnapsToDevicePixels避免DPI缩放或布局计算导致的像素间隙:

    <DataGrid Name="DataGridBids" 
              SnapsToDevicePixels="True"
              <!-- 原有属性 -->
              >
    
  4. 禁用硬件加速(极端场景)
    如果是WPF渲染引擎的硬件加速bug,可尝试关闭该控件的硬件加速:

    <DataGrid Name="DataGridBids" 
              RenderOptions.ProcessRenderMode="SoftwareOnly"
              <!-- 原有属性 -->
              >
    
  5. 调整列宽计算逻辑
    用SharedSizeGroup让列宽计算更稳定,避免动态调整时的误差:

    <DataGridTextColumn Header="Agent" Width="*" SharedSizeGroup="BidColumn"/>
    <DataGridTextColumn Header="Quantity" Width="*" SharedSizeGroup="BidColumn"/>
    <DataGridTextColumn Header="Buy" Width="*" SharedSizeGroup="BidColumn"/>
    

内容的提问来源于stack exchange,提问作者Renato Dias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 16:12:47