首页 > 解决方案 > 如何在 C# 中删除数据网格中的双线

问题描述

首先,我想绘制整个数据网格的边框。

所以我像下面的代码一样设置数据网格

<DataGrid ItemsSource="{Binding DirectoryPath, Source={StaticResource vm}}"
          CanUserAddRows="False"
          RowHeaderWidth="0"
          BorderBrush="Black"
          BorderThickness="1"
          AutoGenerateColumns="False">

而且,我添加了 DataGridTemplateColum

<DataGridTemplateColumn Header="Pattern List" MinWidth="100" Width="*">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=PathDir}"
                       HorizontalAlignment="Left"
                       VerticalAlignment="Center"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

在运行屏幕中,我发现出现了双线。

我的问题是两个,

  1. 怎么去掉黄圈里的双线?

  2. 我可以更改红色圆圈中 DataGridTemplateColum 的 Header 中的线条颜色吗?

图片

标签: c#.netwpfdatagridborder

解决方案


您可以按如下方式更改 DataGrid 标头设计。下面是一个简单的例子。有关更多详细信息,请参阅

<Window.Resources>

    <LinearGradientBrush x:Key="DataGridHeaderBrush" StartPoint="0.5,0" EndPoint="0.5,1">
        <GradientStop Color="#2a5298" Offset="0"/>
        <GradientStop Color="#1e3c72" Offset="1"/>
    </LinearGradientBrush>


    <Style x:Key="DataGridHeaderStyle" TargetType="DataGridColumnHeader">
        <Setter Property="Background" Value="{StaticResource DataGridHeaderBrush}" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="BorderBrush" Value="Black" />
        <Setter Property="BorderThickness" Value="0" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="HorizontalContentAlignment" Value="Left" />
        <Setter Property="MinWidth" Value="0" />
        <Setter Property="MinHeight" Value="30" />
        <Setter Property="Cursor" Value="Hand" />
    </Style>
    </Window.Resources>

<Grid >
    <DataGrid Name="dataGrid1" ColumnHeaderStyle="{StaticResource DataGridHeaderStyle}"/>
</Grid>

我不明白为什么黄色区域的厚度是可见的。在我看来一切都很正常。


推荐阅读