J'ai un ListView (GridView) avec plusieurs colonnes et jusqu'ici je peux le trier par colonne par ordre alphabétique, mais quand je suis en train de trier A-Z, les chaînes vides apparaissent en haut. Je veux les déplacer jusqu'à la fin. Je pense que j'ai réussi à faire un IComparer qui va mettre des chaînes vides à la fin, mais je ne sais pas comment faire en sorte que mon ListView l'utilise. Voici le comparateur que j'ai fait, au fait:Comment trier WPF GridView par ordre alphabétique avec des chaînes vides à la fin?
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
If TypeOf x Is String And TypeOf y Is String Then
If x = "" And y = "" Then
Return 0
ElseIf x = "" And y <> "" Then
Return 1
ElseIf x <> "" And y = "" Then
Return -1
End If
End If
Return x.CompareTo(y)
End Function
J'ai essayé d'utiliser le CustomSort sur un ListCollectionView comme l'indique l'article, mais cela n'a pas fonctionné. Mon ListView a plusieurs colonnes, chacune étant liée à une propriété dans une classe. J'utilise SortDescriptions pour trier par une seule colonne, donc je m'attendrais à ce qu'une chaîne (le type de propriété) soit transmise au comparateur. Il semble passer un type de ma classe, à la place. Pourquoi??? Aussi l'article dit d'utiliser .ItemsSource, mais c'est Nothing/null pour moi, parce que je suis en train de définir le DataContext. Cela pourrait-il l'affecter? – grant
Eh bien, la seule façon d'obtenir ce résultat était de définir un paramètre de mon comparateur sur le nom de la colonne que je triais et d'utiliser des réflexions pour obtenir la valeur de la propriété, mais cela casse le tri de plusieurs colonnes, Je fais une nouvelle question un peu plus précise. http://stackoverflow.com/q/5588353/403736 – grant