以编程方式将 DataGrid 列宽更改为单元格内容的最长大小
Programmatically change DataGrid column width to longest size of cell content
我正在寻找如何以编程方式将 DataGrid 列宽更改为自动同时忽略列 header 中的文本的示例(如果 header 内容长于列中最长的内容细胞)。
尝试使用 属性 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";
}
然后列的宽度将仅基于单元格内容而不是基于header的长度。
我正在寻找如何以编程方式将 DataGrid 列宽更改为自动同时忽略列 header 中的文本的示例(如果 header 内容长于列中最长的内容细胞)。
尝试使用 属性 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";
}
然后列的宽度将仅基于单元格内容而不是基于header的长度。