其他分享
首页 > 其他分享> > CodeGo.net> WPF的DataGrid-仅按命令排序

CodeGo.net> WPF的DataGrid-仅按命令排序

作者:互联网

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

MySort方法使用DataGrid项目集合,因此我将SortDescription添加到Items和View Sorts中.问题是添加或编辑项目时,我不想对该网格重新排序.排序只能由MySort方法调用.

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

解决方法:

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

标签:wpfdatagrid,c
来源: https://codeday.me/bug/20191123/2065981.html