Ich bin kürzlich über ein Problem gestolpert, bei dem das WPF-Steuerelement ListView
die Möglichkeit zu beschränken scheint, seine Elemente zu sortieren. Insbesondere habe ich sehr viel Mühe, einen SortDescription
zu bekommen, um verschachtelte Eigenschaften (Eigenschaften von Eigenschaften) zu erkennen.WPF ListView - Sortieren nach verschachtelten Eigenschaften
Für straight-forward Sortierung nach EIGENSCHAFTEN, sollte die folgende Zeile die Arbeit machen:
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
ListSortDirection.Ascending));
Und in der Tat funktioniert es gut für mich. Da jedoch die ItemSource
für meine ListView
eine (stark typisierte) DataTable
ist, sind einige der Spalten an verschachtelte Eigenschaften der Zeile gebunden (d. H. Row.OtherTableRow.SubProperty
Bindungspfad Stil) - so arbeiten ADO.NET DataSets für hierarchische Datenbanken.
Was würde Ich mag es, so etwas tun:
listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
ListSortDirection.Ascending));
Aber leider, dass Linie wirft einen ArgumentException
.
'Orders' Typ nicht Eigentum ‚Row genannt haben [ID ], kann die Datensammlung nicht sortieren.
Seltsamerweise habe ich kein Problem mit der Bindung an geschachtelte Eigenschaften. In der Tat zeigen die Felder in der ListView
tadellos gut an ... Noch fügt das Hinzufügen einer PropertyGroupDescription
zu listView.GroupDescriptions
mir irgendwelche Probleme mit verschachtelten Eigenschaften zu - es ist nur SortDescriptions
!
Ist dies aber eine Begrenzung der WPF/ListView
Kontrolle? Gibt es irgendeine Möglichkeit, dass ich Unterstützung als Teil des Rahmens bekomme, oder werde ich dort kein Glück haben? Wenn ich leider bin und diese Inkonsequenz unvermeidlich ist, würde ich es sehr schätzen, wenn jemand einen Hack oder eine Workaround für dieses Szenario verschachtelter Eigenschaften vorschlagen könnte. Ich habe schon ein paar Ideen ausprobiert, aber alles mit minimalem Erfolg.
Hinweis: Mir ist klar, dass ein ORM meine Probleme lösen kann, aber ich fürchte, das ist für das aktuelle Projekt, an dem ich gerade arbeite, gar nicht machbar. Einfache ADO.NET DataSets müssen genügen.
Prost für das. Ich schaue mir das Buch an, wenn es andere fortgeschrittene Szenarien gut abdeckt. :) – Noldorin