Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式将DataGrid列宽更改为单元格内容的最长大小_C#_Wpf_Code Behind - Fatal编程技术网

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

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

我正在寻找一些示例,以编程方式将DataGrid列宽更改为自动,同时忽略列标题中的文本(如果标题内容比列单元格中最长的内容长)。

尝试使用属性(来自MSDN)

对于单列,如下所示:

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