wpf DataGrid -仅按命令排序

本文关键字:命令 排序 DataGrid wpf | 更新日期: 2023-09-27 18:16:08

我有自己的DataGrid组件(继承自DataGrid)。我希望这个组件像一个MS访问网格。我需要的是排序数据一次,当我调用方法MySort() (MyDataGrid.MySort)

MySort方法使用DataGrid项集合,因此我将SortDescription添加到ItemsView Sorts。问题是,当添加或编辑项目时,我不想重新排序此网格。排序只能由MySort方法调用。

如何防止DataGrid排序时,Items.SortDescription有一些值?我需要一些属性,比如do_not_resort

wpf DataGrid -仅按命令排序

如果你使用的是。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();
    }