2010-05-11 5 views
4

J'ai une liste de "choses" qui doivent être filtrées puis affichées groupées et triées. Les données nécessaires pour calculer l'ordre de regroupement et de tri ne sont pas disponibles en tant que propriétés simples - il doit y avoir du travail effectué dans le code pour calculer l'ordre et les groupes. CollectionViewSource me permet de définir un filtre et une logique de tri personnalisés - jusqu'ici tout va bien. Il me permet également de lier GroupDescriptions à un convertisseur de valeur afin que je puisse générer les noms de groupe.Logique de tri personnalisée pour les groupes utilisant CollectionViewSource

La dernière chose que je veux faire est de contrôler l'ordre dans lequel les groupes générés apparaissent et cela me cause de la peine! Tout ce que je vois à propos CollectionViewSource.SortDescriptions dit qu'il va trier les groupes par un nom de la propriété, mais je n'ai pas une propriété disponible pour trier par. SortDescriptions ne peut pas être lié à un convertisseur de valeur comme GroupDescriptions et je n'ai pas d'autres idées. Alors, comment implémenter la logique de tri personnalisée des groupes CollectionViewSource?

Répondre

6

This post on Bea Stollnitz' blog montre comment vous pouvez faire cela. Vous devrez d'abord trier selon les critères de votre regroupement. Même si ce n'est pas une propriété concrète, il devrait être possible de trier vos objets en utilisant la même logique que vous utilisez pour les grouper, n'est-ce pas ?! Certainement, cela n'est pas possible en utilisant une instance de SortDescription, mais vous pouvez utiliser la propriété ListCollectionView.CustomSort et spécifier une implémentation IComparer appropriée.

+0

Ça n'a pas l'air de marcher pour moi quand je l'ai essayé, mais je reviendrai et jetterai un autre coup d'œil, depuis que j'ai essayé plein d'autres choses depuis et il est tout à fait possible que j'ai raté quelque chose ... – MarcE

+0

Eh bien, ça marche pour moi. Peut-être que vous pourriez poster du code, alors nous pourrions essayer de trouver votre problème. – gehho

+0

OK, j'ai eu un "ne pouvait pas voir le bois pour les arbres" moment. Merci - après avoir nettoyé tout le cru qui a fait ce que je cherchais. – MarcE

Questions connexes