-1
我有一个从代码生成的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;
这导致的宽度Double.NaN
,这是我想要的一个DataGrid
,它具有3列,就像我想,但是,列不正确的大小。他们每个占用尽可能小的空间,而不是填充DataGrid
的整个空间。
当我手动设置DataGrid
的宽度时,列的行为应该像填充整个宽度一样,并且每个列的宽度都相等。
下面是一张错误DataGrid
的图片。
+1:这是至少朝正确方向迈出的一步。我将每列的宽度更新为'col.Width = new DataGridLength(1,DataGridLengthUnitType.Star);',但正如您所说的那样,它们似乎不会随着DataGrid的大小调整而更新。 – 2014-11-03 18:00:22
您可以尝试在更新之前使用'ClearValue'清除每列的宽度。如果你再次设置它,但宽度*已经* 1 *',那么它不会被视为一个改变。再次查看源代码,似乎更改列宽应导致重新计算“实际”宽度。 – 2014-11-03 18:02:06
实际上,在'Loaded'事件中,每列的宽度都是'Auto',我把早先的宽度设置器注释掉了。 – 2014-11-03 18:05:44