c# - 为什么单元格标题和单元格内容在数据网格中不对齐?

标签 c# wpf xaml datagrid

我有这个 xaml 代码:

            <DataGridTextColumn Header="number" Binding="{Binding Path=Number, Mode=OneWay}" Width="70"  CanUserResize="False" >
                <DataGridTextColumn.CellStyle>
                    <Style>
                        <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center" />
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>

            <DataGridTextColumn Header="Status" Binding="{Binding Path=ProcessingState}" Width="100">
                <DataGridTextColumn.CellStyle>
                    <Style>
                        <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center" />
                    </Style>
                </DataGridTextColumn.CellStyle>


            </DataGridTextColumn>

但是当它显示在屏幕上时,它会生成此 View :

enter image description here

可以看出,单元格未与标题对齐。我怎样才能使它们对齐?

最佳答案

如果您只是想让单元格中的文本居中,那么您可以像这样使用 DataGridTemplateColumn:

<DataGrid ItemsSource="{Binding SalesPeriods}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="number" Width="70" CanUserResize="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Number, Mode=OneWay}" 
                        HorizontalAlignment="Center" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="Status" Width="100">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=ProcessingState, Mode=OneWay}" 
                        HorizontalAlignment="Center" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

如果您更喜欢使用 DataGridTextColumn,那么您仍然可以使用 ElementStyle 属性实现此目标:

<DataGridTextColumn Header="number" Binding="{Binding Path=Year, Mode=OneWay}" 
    Width="70" CanUserResize="False" >
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="HorizontalAlignment" Value="Center" />
        </Style>
    </DataGridTextColumn.ElementStyle>
</DataGridTextColumn>

关于c# - 为什么单元格标题和单元格内容在数据网格中不对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21280849/

相关文章:

c# - 在 ResourceDictionary 中添加 .cs?

c# - 如何在 C# 中使用 Json.NET 从 JSON 访问嵌套对象

c# - DefiningQuery 且 <ModificationFunctionMapping> 元素中不存在 <DeleteFunction> 元素以支持当前操作

c# - MVVM - IsEnabled 无法与绑定(bind) bool 值一起正常工作

c# - Entity Framework 5 更新对于每个对象/行仅有效一次

wpf 在我的自定义控件之外捕获鼠标

silverlight - 在 Silverlight 4 中使用值转换器绑定(bind)到 FontWeight

c# - 将项目从 Xaml 文件添加到字典属性

c# - 在 HTML 或 JavaScript 中查找特定字符串

c# - .net core 中项目之间的身份验证