Jas*_*ins 5 c# sorting wpf datagrid collectionview
我有一个要尝试实现CustomSort的DataGrid。DataGrid ItemsSource始终返回的EnumerableCollectionView类型是不可排序的。我试图将EnumerableCollectionView转换为ListCollectionView,以便可以在其上实现CustomSort方法。基础集合是ObservableDictionary。如何将EnumerableCollectionView转换为ListCollectionView或从ItemsSource返回ListCollectionView?
最终我自己解决了这个问题。我创建了一个新列表,其中包含所有 DataGridRows,然后根据我的 DataGridRows 列表创建一个新的 ListCollectionView。然后,我根据新列表执行自定义排序,并将 DataGrid 的 ItemsSource 设置为 ListCollectionView。
private void PerformCustomSort(DataGridColumn column) {
ListSortDirection direction = (column.SortDirection != ListSortDirection.Ascending) ? ListSortDirection.Ascending : ListSortDirection.Descending;
column.SortDirection = direction;
List<DataGridRow> dgRows = new List<DataGridRow>();
var itemsSource = dataGrid1.ItemsSource as IEnumerable;
foreach (var item in itemsSource) {
DataGridRow row = dataGrid1.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (null != row) {
dgRows.Add(row);
}
}
ListCollectionView lcv = new ListCollectionView(dgRows);
SortOrders mySort = new SortOrders(direction, column);
lcv.CustomSort = mySort;
dataGrid1.ItemsSource = lcv;
}
Run Code Online (Sandbox Code Playgroud)
这使我能够避免使用 EnumerableCollectionView 并允许排序。
归档时间: |
|
查看次数: |
1885 次 |
最近记录: |