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

Nig*_*ker 11 .net c# wpf gridview

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

<DataGrid Grid.Row="0" AutoGenerateColumns="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Name="dataGrid1"   ItemsSource="{Binding Customers}" />
Run Code Online (Sandbox Code Playgroud)

我的列是自动生成的.

use*_*566 13

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

int n = grid.Columns.Count;
grid.Columns[n].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
Run Code Online (Sandbox Code Playgroud)

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

<DataGrid>
  <DataGrid.Columns>
    <DataGridTextColumn Width="Auto" />
    <DataGridTextColumn Width="*" />
  </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

  • @ user807566:它们不相同,特别是DataGrid类上不存在AutoSizeMode属性. (7认同)
  • 你的答案不是与winforms有关吗? (4认同)
  • &lt;Da​​taGridTextColumn Width =“ *” /&gt;对我来说很好用,谢谢。 (2认同)
  • 为什么这是选择的答案?为什么它有这么多赞成票? (2认同)

小智 6

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

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