2009-09-22 8 views
1

J'ai dans un formulaire deux zones de liste déroulante qui ont la propriété itemssource exacte. Les deux listes déroulantes doivent être triées, mais de deux manières différentes. L'un est trié par l'identifiant (numérique), l'autre par nom (alphabétique).Tri de deux zones de liste déroulante différemment dans WPF

Est-il possible de faire une telle chose?

Merci

Répondre

0

Comment trier et listbox comboboxes dans WPF http://www.kudzuworld.com/Blogs/Tech/20070815A.en.aspx

Depuis WPF ne fournit pas un "ordre de tri" propriété pour ses zones de liste déroulante, vous avez besoin de deux collections différentes.

Dans le lien que j'ai fourni ci-dessus, un commentateur a posté la méthode suivante en utilisant un objet ListCollectionView pour obtenir un tri personnalisé. Cela permet à une collection unique de votre source de données à utiliser, tout en ajoutant une couche supplémentaire de collections pour le tri:

// Using System.ComponentModel; 
ListCollectionView view = new ListCollectionView (channel.Members); 
view.SortDescriptions.Add(new SortDescription("lastName", ListSortDirection.Ascending); 
view.SortDescriptions.Add(new SortDescription("firstName", ListSortDirection.Ascending); 
view.CustomSort = new IComparerImplementation; //Do this if you want a custom sort; 
view.Refresh(); 
+1

La bonne façon serait d'utiliser un CollectionView sur le ItemsSource. Vous pouvez avoir plusieurs CollectionView, chacun avec des descriptions de tri différentes, sur une seule source, – decasteljau

+0

Pourquoi est-ce correct? Cela empêche-t-il une deuxième base de données d'être touchée? –

+0

@Robert Harvey: La collection reste la même, lue une fois depuis la base de données ou autre. Deux objets côté client CollectionView sont utilisés en tant que ItemsSource en tant que couche supplémentaire entre la présentation et la collecte de données. –

Questions connexes