我正在寻找示例如何以编程方式将DataGrid列宽更改为Auto而忽略列标题中的文本(如果标题内容长于列单元格中的最长内容)。
答案 0 :(得分:1)
尝试使用属性sizeToCells(来自MSDN)
对于单列来说是这样的:
grid.Columns[0].Width = new DataGridLength(1, DataGridLengthUnitType.SizeToCells);
答案 1 :(得分:0)
而不是在XAML标记中设置列的Header
属性,如下所示:
<DataGrid x:Name="dg">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}" Header="some very long header some very long header some very long header" />
<DataGridTextColumn Binding="{Binding}" Header="short" />
</DataGrid.Columns>
</DataGrid>
..您可以在加载DataGrid
后以编程方式设置它:
<DataGrid x:Name="dg" Loaded="dg_Loaded">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}" />
<DataGridTextColumn Binding="{Binding}" Header="short" />
</DataGrid.Columns>
</DataGrid>
private void dg_Loaded(object sender, RoutedEventArgs e)
{
dg.Columns[0].Width = new DataGridLength(dg.Columns[0].ActualWidth);
dg.Columns[0].Header = "some very long header some very long header some very long header";
}
然后列的宽度将仅基于单元格内容,而不是基于标题的长度。