Mam WPF DataGrid z zaimplementowanym niestandardowym sortowaniem i działa dobrze. Muszę zablokować niektóre rekordy w kolekcji do góry i dołu (górna blokada i dolna blokada). Jeśli więc dany rekord jest zablokowany na górze, powinien to być pierwszy rekord w kolekcji, niezależnie od wartości dla wybranej kolumny (tj. Nie chcę sortować tych wierszy, które są zablokowane na górze, a dolne zablokowane). Oto moja niestandardowa metoda sortowania.Niestandardowe sortowanie WPF DataGrid z pewnymi rekordami zablokowanymi
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;
}
gdzie LineSorter jest mój zwyczaj klasa sorter z IComparer realizacji. To działa dobrze. Teraz chcę zastosować Top lock i Bottom lock do ListCollectionView. Próbowałem powyższego kodu z powyższym, ale nie ma żadnych zmian (np. Lista jest sortowana na podstawie tylko kolumna sortowania niestandardowego).
listCollectionView.SortDescriptions.Add(new SortDescription("TopLock", ListSortDirection.Descending));
listCollectionView.SortDescriptions.Add(new SortDescription("BotLock", ListSortDirection.Ascending));
Czy istnieje sposób na wykonanie tego scenariusza lub czy muszę ręcznie usunąć, a następnie dodać zablokowane rekordy. Proszę zasugerować ..
możesz utworzyć trzy różne kolekcje i połączyć je.jedna kolekcja będzie miała górny zamek, drugi dolny zamek, a trzecia będzie miała wszystkie elementy. –
Zmień swoją implementację 'LineSorter.Compare()' tak, aby zawsze zwracać najbardziej zablokowane elementy jako mniej niż inne elementy, a dolne elementy jako większe niż inne elementy. Zakładam, że istnieje powód, dla którego nie możesz tego zrobić? –