wpf DataGrid - 仅在命令上排序

时间:2013-05-31 08:44:05

标签: c# wpfdatagrid

我有自己的DataGrid组件(继承自DataGrid)。我希望此组件的行为类似于MS Access网格。当我调用方法MySort() (MyDataGrid.MySort)

时,我需要对数据进行一次排序

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

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

1 个答案:

答案 0 :(得分: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();
    }