我有自己的DataGrid
组件(从DataGrid
继承)。我希望该组件的作用类似于MS Access网格。当我调用方法MySort()
(MyDataGrid.MySort)
时,我需要对数据进行一次排序MySort
方法使用DataGrid
项目集合,因此我将SortDescription
添加到Items
和View Sorts
中。问题是添加或编辑项目时,我不想对该网格重新排序。排序只能由MySort
方法调用。
当DataGrid
具有某些值时,如何防止Items.SortDescription
排序?我需要一些属性,例如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();
}