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