是否可以拉伸列或最后一列来填充数据网格的所有可用空间?
<DataGrid Grid.Row="0" AutoGenerateColumns="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Name="dataGrid1" ItemsSource="{Binding Customers}" />
我的列是自动生成的。
答案 0 :(得分:12)
是的,我认为您正在寻找AutoSizeMode财产。
int n = grid.Columns.Count;
grid.Columns[n].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
编辑:尝试将宽度设置为“*”,如下所示。如果你的列是自动生成的,你必须在代码中执行此操作。
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Width="Auto" />
<DataGridTextColumn Width="*" />
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:0)
尝试这种方法的人,我今天早上写的,强大而可靠,并允许基于百分比的宽度列占用所有可用空间。 https://stackoverflow.com/a/10526024/41211
答案 2 :(得分:0)
DataGrid.Columns [x] .Width = DataGridLength.Auto;
答案 3 :(得分:0)
由于我在该主题上找到的绝大多数答案都与XAML有关,因此这是一种C#解决方案,用于设置所有列以填充数据网格中的可用空间。
foreach (var column in this.datagrid.Columns)
{
column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
}
答案 4 :(得分:0)
如果您想将所有列宽设置为自动,最后一行除外(应填满剩余空间),请尝试以下代码:
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);
}
}