Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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#_.net_Wpf_Gridview - Fatal编程技术网

C# 拉伸列以填充DataGrid的所有可用空间

C# 拉伸列以填充DataGrid的所有可用空间,c#,.net,wpf,gridview,C#,.net,Wpf,Gridview,是否可以拉伸列或最后一列以填充数据网格的所有可用空间 <DataGrid Grid.Row="0" AutoGenerateColumns="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Name="dataGrid1" ItemsSource="{Binding Customers}" /> 我的列是自动生成的。是的,我想您正在寻找该属性 int n = grid.Columns.Count

是否可以拉伸列或最后一列以填充数据网格的所有可用空间

<DataGrid Grid.Row="0" AutoGenerateColumns="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Name="dataGrid1"   ItemsSource="{Binding Customers}" />


我的列是自动生成的。

是的,我想您正在寻找该属性

int n = grid.Columns.Count;
grid.Columns[n].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
<DataGrid>
  <DataGrid.Columns>
    <DataGridTextColumn Width="Auto" />
    <DataGridTextColumn Width="*" />
  </DataGrid.Columns>
</DataGrid>
编辑:尝试将宽度设置为“*”,如下所示。如果列是自动生成的,则必须在代码中执行此操作

<DataGrid>
  <DataGrid.Columns>
    <DataGridTextColumn Width="Auto" />
    <DataGridTextColumn Width="*" />
  </DataGrid.Columns>
</DataGrid>


试试这种方法,伙计们,我今天早上写的,健壮可靠,允许基于百分比的宽度列占用所有可用空间

DataGrid.Columns[x].Width=DataGridLength.Auto

因为我在这个主题上找到的绝大多数答案都是关于XAML的,所以这里有一个C#解决方案来设置所有列以填充数据网格中的可用空间

    foreach (var column in this.datagrid.Columns)
    {
        column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
    }

如果要将除最后一列之外的所有列宽设置为“自动”,这将填充剩余空间,请尝试以下代码:

for (int i = 0; i < grid.Columns.Count; i++)
{
    if (i == grid.Columns.Count - 1)
    {
        grid.Columns[i].Width = new DataGridLength(1, DataGridLengthUnitType.Star);
    }
    else
    {
        grid.Columns[i].Width = new DataGridLength(1, DataGridLengthUnitType.Auto); 
    }
}
for(int i=0;i
您的答案是否与winforms相关?是的,但WPF中的
DataGrid
与winforms中的
DataGridView
相同。请参阅此链接:@user807566:它们不完全相同,特别是DataGrid类上不存在AutoSizeMode属性。对我来说很好,谢谢。为什么选择这个答案?为什么会有这么多选票?