Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGrid自动生成列:增加宽度_C#_.net_Wpf_Datagrid - Fatal编程技术网

C# DataGrid自动生成列:增加宽度

C# DataGrid自动生成列:增加宽度,c#,.net,wpf,datagrid,C#,.net,Wpf,Datagrid,有没有办法将自动生成的列的宽度增加固定的数量?我正在尝试执行以下操作,但不起作用: private void dgvMailingList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { e.Column.Width += 30; } 偶数e.Column.Width=e.Column.Width+30不起作用,因为宽度的默认单位类型为自动,因此e.Column.Width

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

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

偶数
e.Column.Width=e.Column.Width+30
不起作用,因为
宽度
的默认
单位类型
自动
,因此
e.Column.Width
返回
1.0
,而不是实际像素宽度
UnitType本身是只读的,因此也不能使用它<在
AutoGeneratingColumn
事件中,code>ActualWidth
也设置为
0
。正确的方法是什么?

当引发
自动生成列
事件时,UI上的列尚未呈现。因此,实际宽度为0.0

使用加载的
事件在列上循环并按所需的常数因子增加宽度

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

当引发
AutoGeneratingColumns
事件时,尚未在UI上呈现列。因此,实际宽度为0.0

使用加载的
事件在列上循环并按所需的常数因子增加宽度

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

您希望所有列的列宽都相同吗?@RohitVats:谢谢。我只是希望这些列比自动生成期间指定的宽度宽30像素。自动生成的宽度刚好适合内容,我希望它看起来更宽一些。主要问题是,我无法在AutoGeneratingColumns事件中获取当前宽度(以像素为单位)值。我已经发布了一个答案。看看这是否有帮助。你希望所有列的列宽都相同吗?@RohitVats:谢谢。我只是希望这些列比自动生成期间指定的宽度宽30像素。自动生成的宽度刚好适合内容,我希望它看起来更宽一些。主要问题是,我无法在AutoGeneratingColumns事件中获取当前宽度(以像素为单位)值。我已经发布了一个答案。看看这是否有帮助,这很有效。谢谢不过有一个警告。有没有办法手动调用此事件?我需要在点击按钮时调整大小。是的,把这个放在按钮的点击处理程序中。但要获得dataGrid,您需要在XAML中对其设置
x:Name
,并在code behind中按名称访问它。这很有效。谢谢不过有一个警告。有没有办法手动调用此事件?我需要在点击按钮时调整大小。是的,把这个放在按钮的点击处理程序中。但要获取dataGrid,您需要在XAML中对其设置
x:Name
,并在代码隐藏中按名称访问它。