WPF datagrid标头/数据对齐问题

WPF datagrid标头/数据对齐问题,wpf,datagrid,header,alignment,Wpf,Datagrid,Header,Alignment,有一个WPF数据网格,没有什么特别之处。它有时具有HeadersVisibility All/Row,这取决于代码中的用法。 但不管标题样式如何,它都存在对齐问题。 标题/数据文本未正确对齐,左上角的第一个标题也未对齐,此处缺少1个像素。 我附上一张照片,以便更清晰地看到 这看起来真的很不专业和业余。 文本对齐比左上角差得多,因此如果我能修复它,这将是一个很大的改进 垂直:如我所见,行标题文本正确地对齐到中心,而数据略高于中心 水平:在这里,哪一个与哪一个(headerdata)对齐并不重要,

有一个WPF数据网格,没有什么特别之处。它有时具有HeadersVisibility All/Row,这取决于代码中的用法。 但不管标题样式如何,它都存在对齐问题。 标题/数据文本未正确对齐,左上角的第一个标题也未对齐,此处缺少1个像素。 我附上一张照片,以便更清晰地看到

这看起来真的很不专业和业余。 文本对齐比左上角差得多,因此如果我能修复它,这将是一个很大的改进

垂直:如我所见,行标题文本正确地对齐到中心,而数据略高于中心

水平:在这里,哪一个与哪一个(headerdata)对齐并不重要,但至少它们应该是对齐的

谢谢

编辑 XAML部分:

<dg2d:DataGrid2DT.CellStyle>
    <Style TargetType="wpftoolkit:DataGridCell">
            <Setter Property="TextBlock.VerticalAlignment" Value="Stretch"/>
            <Setter Property="TextBlock.HorizontalAlignment" Value="Stretch"/>
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="LightBlue"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</dg2d:DataGrid2DT.CellStyle>

我试图添加
,但没有效果。为了尝试,我添加了
-这很好用。只有帕迪格什么也不做。也许电池太小,无法填充

EDIT2

如果我将垂直对齐设置为“中心”,则文本块将置于单元格的中心。这样一来,文本或多或少位于中间,但效果不好,因为textblock不再填充单元格。我希望文本块填充单元格,并使文本垂直居中。 使用“填充”应该可以解决我的问题,但没有效果


您可以将
数据网格列中的文本居中放置,如:

<DataGridTemplateColumn Header="1">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Item1Property}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

我找到了解决方案,通过使用
填充
我可以将单元格文本与标题文本对齐。 但是,正如我提到的,使用简单的
填充
文本块。填充
不起作用,你需要一个“技巧”,我在这里找到了它:


-->解决方案

您是否尝试设置行标题或列标题的内容控件的垂直对齐方式和/或水平对齐方式。您也可以尝试在单元格上设置它们,但对齐问题不在于行或列标题,而在于数据单元格。请看屏幕截图,标题文本与数据单元格不同,对齐良好。如何定义单元格?与DataGridTemplateColumn一样,XAML中未定义单元格。我认为它们是在代码中动态生成的。(对不起,这不是我的代码,我只是接管,我不熟悉wpf)我在XAML中有这个,它包含数据模板:
,在XAML中,我只看到行标题的
数据模板,而不是特定的列。我认为列是你的问题???我的问题是单元格文本既不与行标题文本垂直对齐,也不与列标题文本水平对齐。如上图所示,红线不是连续的。还有一个
AutoGeneratingColumn
的事件处理程序,这里设置了
column.Binding.Path
<dg2d:DataGrid2DT.CellStyle>
    <Style TargetType="wpftoolkit:DataGridCell">
        <Setter Property="TextBlock.VerticalAlignment" Value="Stretch"/>
        <Setter Property="TextBlock.HorizontalAlignment" Value="Stretch"/>

--> solution
        <Setter Property="Padding" Value="2,2,0,0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type wpftoolkit:DataGridCell}">
                    <Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                        <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
<-- solution

        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="LightBlue"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</dg2d:DataGrid2DT.CellStyle>