我正在寻找示例如何编程方式将datagrid列宽度更改为自动,而忽略了列标题的文本(如果标头内容比列单元格中最长的内容更长)。
尝试使用属性sizetocells(来自msdn)
单列喜欢这样的:
grid.Columns[0].Width = new DataGridLength(1, DataGridLengthUnitType.SizeToCells);
,而不是在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";
}
然后,列的宽度仅基于单元格内容,但不基于标题的长度。