繁体   English   中英

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

[英]Stretching columns to fill all available space of DataGrid

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

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

我的列是自动生成的。

是的,我认为您正在寻找AutoSizeMode属性。

int n = grid.Columns.Count;
grid.Columns[n].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

编辑:尝试将宽度设置为“*”,如下所示。 如果您的列是自动生成的,则您必须在代码中执行此操作。

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

由于我在本主题中找到的绝大多数答案都涉及 XAML,因此这里有一个 C# 解决方案,用于设置所有列以填充数据网格中的可用空间。

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

尝试这种方法,我今天早上写的,健壮可靠,并允许基于百分比的宽度列占用所有可用空间。 https://stackoverflow.com/a/10526024/41211

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM