我有一個WPF Datagrid與自定義排序實施,它工作正常。我需要將集合中的一些記錄鎖定到頂部和底部(頂部鎖定和底部鎖定)。所以當一個特定的記錄被頂部鎖定時,它應該是集合中的第一條記錄,而不管所選列的值如何(即我不想對那些頂部鎖定和底部鎖定的行進行排序)。這是我的自定義排序方法。WPF DataGrid自定義排序鎖定了一些記錄
private void PerformLineCustomSort(DataGridColumn column)
{
ListSortDirection direction = (column.SortDirection != ListSortDirection.Ascending) ? ListSortDirection.Ascending : ListSortDirection.Descending;
column.SortDirection = direction;
ListCollectionView listCollectionView = (ListCollectionView)CollectionViewSource.GetDefaultView(Lines);
LineSorter lineSort = new LineSorter(direction, column);
listCollectionView.CustomSort = lineSort;
}
其中LineSorter是我的自定義分類器類的IComparer實施。這工作正常。現在我想將頂部鎖和底部鎖應用於ListCollectionView。我已經嘗試了以上代碼,但它沒有任何更改(即,列表僅基於自定義排序列進行排序)。
listCollectionView.SortDescriptions.Add(new SortDescription("TopLock", ListSortDirection.Descending));
listCollectionView.SortDescriptions.Add(new SortDescription("BotLock", ListSortDirection.Ascending));
有沒有辦法做這種情況下,還是我需要手動刪除,然後添加鎖定的記錄。請建議..
你可以創建三個不同的集合和聯合它。一個集合將有頂級鎖,第二個有底部鎖,第三個集合將有所有元素休息。 – 2013-02-26 08:44:33
將您的'LineSorter.Compare()'實現更改爲始終返回頂部鎖定項目的數量小於其他項目,並將底部鎖定項目的數量大於其他項目。我假設有一個原因,你不能這樣做,但? – 2013-02-26 08:59:47