列的WPF DataGrid边框已移位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列的WPF DataGrid边框已移位相关的知识,希望对你有一定的参考价值。

我完全不知道哪个属性负责垂直单元格边界的移动。内容正确对齐中央,但边框似乎认为其对齐正确。

DataGrid Example

XAML定义是:

<DataGrid x:Name="DG_ComparedSet" 
          AllowDrop="True"
          Background="AliceBlue"
          HorizontalAlignment="Stretch"
          AutoGenerateColumns="False" 
          PreviewDragEnter="File_DragEvent" 
          PreviewDragOver="File_DragEvent" 
          PreviewDrop="DG_ComparedSet_PreviewDrop">
    <DataGrid.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Clear Comparison" Name="CXM_clearComparison" Click="CXM_clearComparison_Click" />
        </ContextMenu>
    </DataGrid.ContextMenu>
</DataGrid>

以编程方式构建的DataGrid布局通过以下方式完成:

Style cellStyle = new Style(typeof(DataGridCell));
cellStyle.Setters.Add(new Setter(DataGridCell.FontFamilyProperty, new FontFamily("Consolas")));
cellStyle.Setters.Add(new Setter(DataGridCell.HorizontalAlignmentProperty, HorizontalAlignment.Center));
cellStyle.Setters.Add(new Setter(DataGridCell.VerticalAlignmentProperty, VerticalAlignment.Center));
cellStyle.Setters.Add(new Setter(DataGridCell.ForegroundProperty, Brushes.MediumSeaGreen));

foreach (string colHead in parameters)
{
    DataGridTextColumn col = new DataGridTextColumn
    {
         Header = colHead,
         FontFamily = new FontFamily("Consolas"),
         Binding = new Binding(colHead),
         CellStyle = cellStyle
    };
    DG_ComparedSet.Columns.Add(col);
}
DG_ComparedSet.ItemsSource = dtOut.DefaultView;

哪个属性丢失或设置不正确?

答案

单元格对齐的设置会丢弃列的渲染。如果没有看到更多的代码,我无法确定您的意图,但如果您希望将单元格文本置于中心位置,则将内容置于中心而不是单元格本身。

Style cellStyle = new Style (typeof (DataGridCell));
cellStyle.Setters.Add (new Setter (DataGridCell.FontFamilyProperty, new FontFamily ("Consolas")));
//cellStyle.Setters.Add (new Setter (DataGridCell.HorizontalAlignmentProperty, HorizontalAlignment.Center));
//cellStyle.Setters.Add (new Setter (DataGridCell.VerticalAlignmentProperty, VerticalAlignment.Center));
cellStyle.Setters.Add (new Setter (TextBlock.TextAlignmentProperty, TextAlignment.Center));
cellStyle.Setters.Add (new Setter (DataGridCell.ForegroundProperty, Brushes.MediumSeaGreen));

假设您的单元格当然只包含文本字符串。

以上是关于列的WPF DataGrid边框已移位的主要内容,如果未能解决你的问题,请参考以下文章

WPF Datagrid:通过已使用 ValueConverter 转换的 UI 编辑值 [关闭]

绑定 WPF Datagrid 列的 Visibility 属性?我的错在哪里?

在wpf中怎么获取datagrid某行某列的值

wpf datagrid绑定了数据 如果选中多行中怎么获取选中行的某列的值

在wpf中怎么获取datagrid某行某列的值啊?急!跪求!

wpf datagrid cell 设置焦点