调整 DataGrid 大小时出现意外的垂直线

问题描述 投票:0回答:1

我正在使用以下代码使用 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>

当我打开 DataGrid 时,它的工作方式与我预期的完全一样:

但是当我调整窗口大小时,这些意想不到的白色垂直线不断出现(尽管并非总是如此):

由于某种原因,白线仅显示在第二列和第三列之间,并且始终垂直。

我不知道这是否是 WPF 错误,但无论如何我都想修复它。

任何建议都值得赞赏,谢谢!

c# wpf user-interface datagrid
1个回答
0
投票

渲染一定有什么奇怪的地方。由于您的列都打算具有相同的背景,因此您的样式可以像这样以

DataGridRow
而不是
DataGridCell
为目标(注意:我使用透明,因为
DataGrid
已经具有您想要的背景颜色):

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

这消除了我在调整网格大小时看到的任何奇怪的锯齿,但我无法准确重现您所显示的内容。

© www.soinside.com 2019 - 2024. All rights reserved.