WPF DataGrid:禁用新项目的排序,但以编程方式保留旧项目排序

时间:2018-04-03 14:28:51

标签: wpf sorting code-behind

我使用此论坛帖子Sort a wpf datagrid programmatically中的解决方案以编程方式对DataGrid列进行排序。

public static void SortDataGridByMultipleColumns(DataGrid dataGrid, Dictionary<int,ListSortDirection> sortInfo)
    {
         //here I force DataGrid to exit edit or add new mode
        RemoveNewAndEdit(dataGrid);

        // Clear current sort descriptions
        dataGrid.Items.SortDescriptions.Clear();

        //Apply sort
        foreach(var i in sortInfo)
        {
            var column = dataGrid.Columns[i.Key];
            dataGrid.Items.SortDescriptions.Add(new SortDescription(column.SortMemberPath, i.Value));
        }

        // Apply sort
        foreach (var col in dataGrid.Columns)
        {
            col.SortDirection = null;
        }
        foreach (var i in sortInfo)
        {
            var column = dataGrid.Columns[i.Key];
            column.SortDirection = i.Value;
        }
        // Refresh items to display sort
        dataGrid.Items.Refresh();
    }

当我向DataGrid添加新行并按Enter键时,我的问题就开始了 - 然后新行自动排序。当行数很高时,我可以从我的视线中丢失这一行。所以我需要排序旧行,列标题样式已更改,但新行未排序(我希望它们位于列表末尾,直到发生一些刷新)。

我相信这是可以实现的,因为当我使用

对XAML中的列进行排序时
SortMemberPath="columnPropertyPath" SortDirection="Ascending"

所有工作都像我需要的那样,但我也需要从后面的代码中进行排序,因为我希望实现一天的用户排序设置。

0 个答案:

没有答案