Ho un Datagrid WPF con l'ordinamento personalizzato implementato e funziona correttamente. Devo bloccare alcuni dei record nella raccolta su Alto e Basso (Blocco superiore e Blocco inferiore). Quindi, quando un particolare record è Top bloccato, dovrebbe essere il primo record della collezione indipendentemente da qualsiasi valore per la colonna selezionata (cioè non voglio ordinare quelle righe che sono Bloccato in alto e Bloccato in basso). Ecco il mio metodo di ordinamento personalizzato.WPF DataGrid ordinamento personalizzato con alcuni record bloccati
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;
}
dove LineSorter è la mia classe selezionatrice personalizzato con IComparer attuazione. Funziona bene Ora voglio applicare il blocco superiore e il blocco inferiore a ListCollectionView. Ho provato il seguente codice con quanto sopra, ma non ha alcun cambiamento (cioè l'elenco è ordinato in base solo alla colonna di ordinamento personalizzata).
listCollectionView.SortDescriptions.Add(new SortDescription("TopLock", ListSortDirection.Descending));
listCollectionView.SortDescriptions.Add(new SortDescription("BotLock", ListSortDirection.Ascending));
C'è qualche modo di fare questo scenario o ho bisogno di rimuovere manualmente e quindi aggiungere i record bloccati. Si prega di suggerire ..
è possibile creare le tre diverse raccolte e unirlo.una raccolta avrà il blocco superiore, la seconda avrà il blocco inferiore e la terza raccolta avrà resto tutti gli elementi. –
Modifica l'implementazione di 'LineSorter.Compare()' per restituire sempre gli articoli bloccati in alto meno degli altri articoli e gli oggetti in basso a sinistra come maggiori di altri elementi. Suppongo che ci sia un motivo per cui non puoi farlo anche tu? –