有没有办法将自动生成的列的宽度增加一个固定的数量?我试图做以下事情,但它不起作用:
private void dgvMailingList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
e.Column.Width += 30;
}
即使e.Column.Width = e.Column.Width + 30;
无法正常工作,因为UnitType
的默认Width
为Auto
,因此e.Column.Width
会返回1.0
而非实际的像素宽度。 UnitType
本身是只读的,因此也无法使用。在ActualWidth
事件中,0
也设置为AutoGeneratingColumn
。这样做的正确方法是什么?
答案 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);
}
}