3

我有自己的DataGrid组件(继承自DataGrid)。我希望这个组件像 MS Access 网格一样工作。当我调用该方法时,我需要对数据进行一次排序MySort() (MyDataGrid.MySort)

MySort方法使用DataGrid项目集合,所以我添加SortDescriptionItemsView Sorts. 问题是我不想在添加或编辑项目时重新排序此网格。排序可能仅由MySort方法调用。

当有一些值时如何防止DataGrid排序?Items.SortDescription我需要一些像do_not_resort.

4

1 回答 1

3

如果您使用的是 .Net framework 4 或更高版本,您可以使用网格控件的“CanUserSortColumns”属性来防止自动排序。

您的自定义网格的 MySort 方法大致如下所示。

public void MySort(DataGridSortingEventArgs args)
    {
        //create a collection view for the datasource binded with grid
        ICollectionView dataView = CollectionViewSource.GetDefaultView(this.ItemsSource);
        //clear the existing sort order
        dataView.SortDescriptions.Clear();

        ListSortDirection sortDirection = args.Column.SortDirection ?? ListSortDirection.Ascending;
        //create a new sort order for the sorting that is done lastly
        dataView.SortDescriptions.Add(new SortDescription(args.Column.SortMemberPath, sortDirection));

        //refresh the view which in turn refresh the grid
        dataView.Refresh();
    }
于 2013-05-31T09:35:22.870 回答