DataGrid列标题未与数据对齐

时间:2012-10-30 13:03:34

标签: c# .net wpf xaml mvvm

我有一个DataGrid,就DataGrids而言,它非常简单。由于某些原因,标题未与其余数据对齐,如下面的屏幕截图所示:

enter image description here

我搜索了互联网,但似乎无法找到解决方案。这是我的DataGrid代码:

Grid>
        <DataGrid Name="dgAttributes" 
                  ItemsSource="{Binding itemsSource}" 
                  AutoGenerateColumns="False" 
                  CanUserAddRows="False" 
                  CanUserDeleteRows="False" 
                  CanUserReorderColumns="False" 
                  CanUserResizeColumns="False" 
                  CanUserResizeRows="False"
                  CanUserSortColumns="False"
                  >
            <DataGrid.Columns>
                <DataGridTextColumn Width="Auto" IsReadOnly="True" Binding="{Binding Field}" Header="Fields"/>
                <DataGridComboBoxColumn  Width="95" IsReadOnly="False" Header="Order" ItemsSource="{Binding Source={StaticResource SortOrderProvider}}" SelectedItemBinding="{Binding SortBy, Mode=TwoWay}"/>
                <DataGridCheckBoxColumn Width="Auto" IsReadOnly="False" Binding="{Binding GroupBy}" Header="Group By"/>
                <DataGridComboBoxColumn Width="85" IsReadOnly="False" Header="Aggregate" ItemsSource="{Binding Source={StaticResource AggregateProvider}}" SelectedItemBinding="{Binding AggregateBy, Mode=TwoWay}"/>
                <DataGridTextColumn Width="Auto" IsReadOnly="False" Binding="{Binding Having}" Header="Having"/>
                <DataGridTextColumn Width="Auto" IsReadOnly="False" Binding="{Binding DisplayOrder}" Header="Display Order"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>

值得一提的是,当我点击其中一个Combobox单元格时,标题会正确对齐。

4 个答案:

答案 0 :(得分:3)

您肯定有一些样式或某些东西隐藏了datagrid的左上角 Select All按钮。因此,列向左移动了一点。

使用此主题获取DataGrid.OnLoad中的该按钮并检查其Visibility属性。

Select All button WPF DataGrid

如果其为collpased / hidden,请将可见性设置为Visbility.Visible。或者检查其Width为零并设置适当的Width

答案 1 :(得分:2)

最后我打败了这个问题 查找the solution here

抱歉,我没有注意到您没有覆盖DataGrid控件模板。我担心,您必须定义控件模板才能更正DataGrid行为。

PS:我有.NET Framework 4.0

答案 2 :(得分:1)

我发现只需将 HeadersVisiblity 设置为“Column”就可以了 - 请参阅下面的XAML。
比抓住SelectAll Button ...

更容易
<DataGrid x:Name="myGrid" HeadersVisibility="Column">

答案 3 :(得分:0)

您可以使用DataGrid Like的属性,也可以为Row定义特定的css类

HeaderStyle-HorizontalAlign=""
HeaderStyle-CssClass=""