以编程方式将DataGrid列宽更改为单元格内容的最大大小

时间:2017-02-21 11:58:18

标签: c# wpf code-behind

我正在寻找示例如何以编程方式将DataGrid列宽更改为Auto而忽略列标题中的文本(如果标题内容长于列单元格中的最长内容)。

2 个答案:

答案 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";
}

然后列的宽度将仅基于单元格内容,而不是基于标题的长度。