我有一个DataGrid,就DataGrids而言,它非常简单。由于某些原因,标题未与其余数据对齐,如下面的屏幕截图所示:
我搜索了互联网,但似乎无法找到解决方案。这是我的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单元格时,标题会正确对齐。
答案 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=""