WPF要拉伸DataGrid的最后一列

gk7wooem  于 2023-08-07  发布在  其他
关注(0)|答案(2)|浏览(118)

有没有办法强制最后一列拉伸DataGrid WPF的宽度?
因为在某些情况下,当DataGrid的宽度大于累积的所有列的宽度时,DataGrid的行为就像包含最后一个空列。

<DataGrid Grid.Row="1" ItemsSource="{Binding Params}"  Width="Auto"
         AutoGenerateColumns="True" HeadersVisibility="None">
</DataGrid>

public List<KeyValuePair<string,string>> Params { get; set; }

字符串
DataGrid with "an empty column"

sbtkgmzw

sbtkgmzw1#

您可以处理AutoGeneratedColumns事件,并以编程方式将最后一列的Width设置为*

private void DataGrid_AutoGeneratedColumns(object sender, EventArgs e)
{
    DataGrid dataGrid = (DataGrid)sender;
    dataGrid.Columns[dataGrid.Columns.Count - 1].Width = new DataGridLength(1, DataGridLengthUnitType.Star);
}

字符串

XAML:

<DataGrid Grid.Row="1" ItemsSource="{Binding Params}" 
          Width="Auto" AutoGenerateColumns="True" HeadersVisibility="None"
          AutoGeneratedColumns="DataGrid_AutoGeneratedColumns">
</DataGrid>

js81xvg6

js81xvg62#

如果您使用的是syncfusion中的SfDataGrid,则要使用的成员是ColumnSizer(而不是Width)。

后面代码:

private void DataGrid_AutoGeneratingColumn(object sender, AutoGeneratingColumnArgs eventArgs)
    {
        string columnMappingName = eventArgs.Column.MappingName;

        if (columnMappingName == "Name")
        {
            eventArgs.Column.ColumnSizer = GridLengthUnitType.Star;
        }
    }

字符串

XAML:

<syncfusion:SfDataGrid AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"/>

相关问题