Initial DataGrid Sorting

2019-07-23 09:36发布

I have a user control that contains a WPF toolkit DataGrid. This control is used in many different places in my app. The grid has no knowledge as to the type of data that will show. Is there a way to initially sort the grid by the first column in ascending order no matter what data the grid is populated with? I don't think I can use a CollectionViewSource because I don't know the PropertyName of the property bound to the first column.

1条回答
干净又极端
2楼-- · 2019-07-23 09:39

You could hook to an event:

dataGrid.AutoGeneratedColumns += dataGrid_AutoGeneratedColumns;

and sort the first column:

void dataGrid_AutoGeneratedColumns(object sender, EventArgs e)
{
    var firstCol = dataGrid.Columns.First();
    firstCol.SortDirection = ListSortDirection.Ascending;
    dataGrid.Items.SortDescriptions.Add(new SortDescription(firstCol.SortMemberPath, ListSortDirection.Ascending));
}

I would suggest you to create a derived separate DataGrid control, placing this logic there and using the new control to avoid repeating the code every time.

public class CustomDataGrid : DataGrid
{
    public DynamicDataGrid()
    { ... }

    ...
}
查看更多
登录 后发表回答