DataGrid自动生成的列:增加宽度

时间:2014-03-31 08:21:54

标签: c# .net wpf datagrid

有没有办法将自动生成的列的宽度增加一个固定的数量?我试图做以下事情,但它不起作用:

private void dgvMailingList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
     e.Column.Width += 30; 
}

即使e.Column.Width = e.Column.Width + 30;无法正常工作,因为UnitType的默认WidthAuto,因此e.Column.Width会返回1.0而非实际的像素宽度。 UnitType本身是只读的,因此也无法使用。在ActualWidth事件中,0也设置为AutoGeneratingColumn。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

引发AutoGeneratingColumns事件时,不会在UI上呈现列。因此ActualWidth为0.0。

使用 Loaded 事件循环遍历列,并按常规因子增加宽度。

private void dataGrid_Loaded(object sender, RoutedEventArgs e)
{
    foreach (var column in ((DataGrid)sender).Columns)
    {
        column.Width = new DataGridLength(column.ActualWidth + 30);
    }
}