Frage

Ich bin kürzlich auf ein Problem gestolpert, bei dem der WPF ListView Die Kontrolle scheint die Fähigkeit einzuschränken, ihre Gegenstände zu sortieren. Insbesondere habe ich große Schwierigkeiten, eine zu bekommen SortDescription Erkennen verschachtelter Eigenschaften (Eigenschaften von Eigenschaften).

Für eine einfache Sortierung durch Propeties sollte die folgende Zeile den Job erledigen:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
    ListSortDirection.Ascending));

Und in der Tat funktioniert es gut für mich. Aber weil die ItemSource für mein ListView ist ein (stark typisch) DataTable, Einige der Säulen sind an verschachtelte Eigenschaften der Reihe (dh an verschachtelte Eigenschaften der Reihe Row.OtherTableRow.SubProperty Bindungspfadstil) - So funktionieren die Ado.net -Datensätze für hierarchiale Datenbanken.

Was ich gerne tun möchte, ist so etwas:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
    ListSortDirection.Ascending));

Aber leider wirft diese Linie eine ArgumentException:

'Bestellungen' Typ hat keine Eigenschaft mit dem Namen 'Row. [ID]', daher kann die Datenerfassung nicht sortiert werden.

Seltsamerweise habe ich kein Problem damit, verschachtelte Eigenschaften zu binden. In der Tat zeigen die Felder in der vollkommen gut an ListView... Auch ein Hinzufügen eines PropertyGroupDescription zu listView.GroupDescriptions Geben Sie mir Probleme mit verschachtelten Eigenschaften - es ist nur SortDescriptions!

Ist das nur eine Einschränkung von WPF/dem ListView Kontrolle? Gibt es eine Möglichkeit, im Rahmen des Rahmens Unterstützung zu erhalten, oder werde ich dort kein Glück mehr haben? Wenn ich leider bin und diese Inkonsistenz unvermeidlich ist, würde ich sehr schätzen, ob jemand einen Hack oder eine Problemumgehung für dieses Szenario verschachtelter Eigenschaften vorschlagen könnte. Ich habe schon ein paar Ideen ausprobiert, aber alle mit minimalem Erfolg.

Hinweis: Mir ist klar, dass ein Orm meine Probleme durchaus lösen kann, aber ich fürchte, dies ist für das aktuelle Projekt, an dem ich arbeite, überhaupt nicht machbar. Einfache ADO.NET -Datensätze müssen tun.

War es hilfreich?

Lösung

Laut der Windows Presentation Foundation Founds freigelassen (Adam Nathan) können Sie die Standardansicht in eine ListCollectionView geben und eine benutzerdefinierte IComenParer -Implementierung in seine Zollgeschäfte einstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top