列的WPF DataGrid边框已移位

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

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

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;

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

c# wpf datagrid border
1个回答
0
投票

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

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));

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

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