Ich bin vor ein ähnliches WPF Listview/Gridview Sortierung Problem und ich habe einige contraints was es schwierig macht, sofern die CSharp-Lösungen zu implementieren. Im Wesentlichen habe ich eine vorhandene ASP.NET-Anwendung mit Tausenden von Zeilen debugged VB-Code sowie SQL für eine Datenbank mit über 100 Tabellen und einigen sehr komplexen Verknüpfungen. Ich muss eine Windows .exe basierend auf der gleichen Anwendung schreiben, aber ich möchte WPF verwenden, um ein ähnliches grafisches Aussehen & Gefühl zu implementieren.
Nachdem ich mit dem Disclaimer fertig war, stieß ich auf das Sortierproblem und durchsuchte das Internet nach all den großartigen gemeinsamen Konzepten wie den obigen und versuchte, sie von CS in VB zu konvertieren. Ich bin ein erfahrener Programmierer, aber ich stellte fest, dass dies einfach außerhalb meiner Reichweite lag, also wandte ich mich anderswo um und entwickelte stattdessen meine eigene Sorte. Es wird wahrscheinlich die Puristen entsetzen, aber ich bin ein Pragmatiker und die Herstellung einer kommerziellen Anwendung hat Vorrang.
Um das Raster zu sortieren, entschied ich mich, nur die Mausereignisse in den Spaltenüberschriften zu verwenden. DoubleClick für Ascending-Sortierungen und MouseRightButtonUp für Absteigend.
<GridViewColumn Header="Project Name   " Width="300" >
Private Sub ListViewGrid_MouseDoubleClick(
ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles ListingDG.MouseDoubleClick
Try
Dim mouseHdrClick As String = DirectCast(DirectCast(e.OriginalSource, System.Object), System.Windows.Controls.TextBlock).Text
Dim SqlOrderBy As String = ""
Select Case UCase(mouseHdrClick.Trim)
Case UCase("Product Name")
SqlOrderBy = " ORDER BY Product_Name"
ich nachladen Dann einfach die ListViewGrid die Variable SqlOrderBy Zeichenfolge verwendet wird.Das einzige Problem, auf das ich stieß, war, dass ich gezwungen wurde, auf den Header-Text in der Spaltenüberschrift zu klicken, damit es funktionierte. Ich habe das gelöst, indem ich einfach das XML-Leerzeichen ( 
) angehängt habe, um die Spaltenbreite zu füllen. Der Befehl .Trim
löscht sie wieder, damit Select Case funktioniert. Ich habe immer noch nicht herausgefunden, wie man die kleinen Pfeile nach oben und nach unten fügt, aber die Funktionalität ist wichtig, da es sich gerade um kosmetische Details handelt.
<GridViewColumn Header="Project Name   " Width="300">
lassen Sie mich schließlich hinzufügen, dass mir bewusst ist, dass, wenn ich die Gridview-Struktur ändern wird es der Kopftext verursacht an anderer Stelle im OriginalSource zu bewegen, aber das ist ein Problem, das ich mit jetzt leben kann. Ich weiß, dass dies eine schnelle & schmutzige Workaround ist und es gibt wahrscheinlich viel bessere Alternativen, so dass alle Empfehlungen geschätzt werden.
Großer Artikel! Ein Beispiel für den GridViewSort.Command wäre in Ordnung. Da ich mit diesem Thema nicht so erfahren bin. – TalkingCode
Ich habe meine Antwort aktualisiert, um das Beispiel hinzuzufügen –
Danke, ich werde das untersuchen. – TalkingCode