J'essaie de trier une collection dérivée de CollectionViewSource, qui contient simplement SortDescriptions pour le tri. Malheureusement, je dois pouvoir utiliser mon IComparer personnalisé, mais je n'arrive pas à trouver un moyen de le faire. Pensez à une grille de données et j'ai mon propre algorithme de tri multi-colonnes. Je pense qu'une façon de le faire est d'utiliser une collection implémentant CollectionChanged qui est une couche supplémentaire entre CollectionViewSource et ma vraie source de données, mais je préférerais vraiment un meilleur moyen si quelqu'un a des suggestions.Tri de CollectionViewSource à l'aide de IComparer personnalisé
12
A
Répondre
13
Bea Stollnitz a un exemple de tri personnalisé here.
Le point essentiel de cet article est de lier la CollectionViewSource
à une mise en oeuvre IList
plutôt que d'une interface ICollection
ou IEnumerable
plus faible. Avec cela, la propriété View
renvoie une instance ListCollectionView
au lieu de CollectionView
. Vous pouvez ensuite utiliser ListCollectionView.CustomSort
pour affecter un IComparer
à votre tri personnalisé. Pour faciliter les choses, vous pouvez également utiliser la méthode Comparer<T>.Create
pour utiliser un délégué Comparison
au lieu d'une classe entière.
Questions connexes
- 1. Problème avec IComparer personnalisé pour la liste (trier) - C#
- 2. IComparer sur plusieurs valeurs
- 3. Implémentation d'un tri personnalisé pour WinForms ListView
- 4. XSLT Personnalisé Tri
- 5. TRI PERSONNALISÉ XSL?
- 6. WPF paginée CollectionViewSource
- 7. structure de données laide à la recherche java
- 8. Tri personnalisé d'une colonne DataSet
- 9. twitter oauth icomparer erreur
- 10. list.sort performances IComparer
- 11. CTE SQL récursif et ordre de tri personnalisé
- 12. DataView.Sort - plus que simplement asc/desc (besoin de tri personnalisé)
- 13. Groupement WPF à l'aide de CollectionViewSource et DataBinding
- 14. DataGridView tri personnalisé pas DataMember (Databound Grid)
- 15. Tri personnalisé sur UltraWebGrid - ASP .NET
- 16. Tri de IQueryable par agrégat dans VB.net
- 17. CollectionViewSource dans silverlight
- 18. Est-ce que CollectionViewSource dans WPF est optimal?
- 19. Création d'un tableau personnalisé dans une fonction de tri de tableaux en Javascript
- 20. WPF: CollectionViewSource l'affichage groupé par la propriété
- 21. utilisation propre IComparer <T> avec Linq OrderBy
- 22. Filtrer une wpf collectionviewsource dans VB?
- 23. comment écrire un code de vb pour le tri échange personnalisé et personnalisé dans sql et asp: répéteur
- 24. Fonction de tri de la table jQuery tri uniquement à sens unique
- 25. SQLite - question de tri
- 26. tri personnalisé ou la commande d'une table sans avoir recours à l'ensemble du shebang
- 27. Tri de la musique
- 28. Les données DesignTime ne s'affichent pas dans Blend lorsqu'elles sont liées à CollectionViewSource
- 29. Index de tri décroissants
- 30. C# multiple de tri
Le point clé de cet article est de lier 'CollectionViewSource' à une implémentation' IList' plutôt qu'à une interface ICollection' ou 'IEnumerable' plus faible. Avec cela, la propriété 'View' renvoie une instance' ListCollectionView' au lieu de 'CollectionView'. Vous pouvez ensuite utiliser 'ListCollectionView.CustomSort' pour affecter un' IComparer' à votre tri personnalisé. Pour faciliter les choses, vous pouvez également utiliser la méthode ['Comparer .Create'] (http://msdn.microsoft.com/en-gb/library/hh737198.aspx) pour utiliser un délégué' Comparison' au lieu d'un la classe entière. –
ygoe