C# 以编程方式将DataGrid列宽更改为单元格内容的最长大小
我正在寻找一些示例,以编程方式将DataGrid列宽更改为自动,同时忽略列标题中的文本(如果标题内容比列单元格中最长的内容长)。尝试使用属性(来自MSDN) 对于单列,如下所示:C# 以编程方式将DataGrid列宽更改为单元格内容的最长大小,c#,wpf,code-behind,C#,Wpf,Code Behind,我正在寻找一些示例,以编程方式将DataGrid列宽更改为自动,同时忽略列标题中的文本(如果标题内容比列单元格中最长的内容长)。尝试使用属性(来自MSDN) 对于单列,如下所示: grid.Columns[0].Width = new DataGridLength(1, DataGridLengthUnitType.SizeToCells); 在XAML标记中,不设置列的标题属性,如下所示: <DataGrid x:Name="dg"> <DataGrid.Colu
grid.Columns[0].Width = new DataGridLength(1, DataGridLengthUnitType.SizeToCells);
在XAML标记中,不设置列的
标题
属性,如下所示:
<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>
然后,列的宽度将仅基于单元格内容,而不基于标题的长度。在Windows窗体中使用DataGridView?Set-DataGridColum width=“Auto”无需在代码隐藏中设置。将根据标题大小调整其大小
<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";
}