使用星号列自动调整数据网格大小

时间:2014-11-03 17:30:59

标签: c# wpf datagrid

我有一个DataGrid,它是从代码中生成的。

DataGrid dataGrid = new DataGrid();
dataGrid.AutoGeneratedColumns = false;
for (int i = 0; i < 3; i++) // Add some columns
{
    DataGridBoundColumn column = new DataGridTextColumn();
    column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
    column.Header = String.Format("Hello World {0}!", i);
    dataGrid.Columns.Add(column);
}

return dataGrid;

这导致DataGrid宽度为Double.NaN,这就是我想要的,并且它有3列,就像我想要的那样,但是,列的大小不正确。它们每个都占用尽可能少的空间,而不是填充DataGrid的整个空间。

当我手动设置DataGrid的宽度时,列的行为应该正常,填满整个宽度,每个宽度都相等。

下面是错误的DataGrid

的图片

Picture of DataGrid

1 个答案:

答案 0 :(得分:1)

您可以尝试推迟列填充,直到数据网格的Loaded事件被触发(然后取消挂起事件处理程序)。但是,当数据网格调整大小时,网格似乎不会更新列宽。修改列集合,项目源更改或列的可见性更改时,计算出的宽度似乎无效。