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

dot*_*NET 1 .net c# wpf datagrid

有没有办法将自动生成的列的宽度增加固定量?我正在尝试执行以下操作,但它不起作用:

private void dgvMailingList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
     e.Column.Width += 30; 
}
Run Code Online (Sandbox Code Playgroud)

Evene.Column.Width = e.Column.Width + 30;不起作用,因为 的默认值UnitTypeWidthAuto因此e.Column.Width返回1.0而不是实际的像素宽度。UnitType它本身是只读的,所以也不能使用它。ActualWidth也设置为事件0AutoGeneratingColumn。这样做的正确方法是什么?

Roh*_*ats 5

AutoGeneratingColumns引发事件时,列尚未在 UI 上呈现。因此实际宽度为 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);
    }
}
Run Code Online (Sandbox Code Playgroud)