2017-12-05 4 views
0

Ich habe eine ListView, die über XAML an eine ObservableCollection gebunden ist. Früher habe ich das Sortieren im Code erledigt, aber es gibt viele Operationen, bei denen ich berücksichtigen muss, dass die Sortierung aktualisiert werden muss.Listenansicht sortieren, die an ObservableCollection in XAML gebunden ist

Also wollte ich es sauberer machen und die Sortierung direkt in XAML dynamischer machen.

Leider kann ich keine Tags/Attribute dafür finden. Alle Beispiele, die ich finde, sind für WPF-Anwendungen mit <CollectionViewSource.SortDescription>, die in XAML, zumindest für jetzt, nicht unterstützt werden.

Ich fand eine AdvancedCollectionView Kontrolle in der UWP Community Toolkit die ich dann verwendet habe. Dieses Steuerelement verwendet die vorhandene ObservableCollection und die ListView (Quelle) ist jetzt an diese AdvancedCollectionView gebunden.

Es scheint zu funktionieren - also, was ist das Problem. 1) Ich muss jetzt ein riesiges Nu-Get-Paket mit vielen Lizenzen verwenden (was ich hätte lesen sollen :-)) 2) Ich habe INotifyPropertyChanged für die Klasse implementiert, die an die ListView (das einzelne Element) gebunden ist ListView wird aktualisiert, wenn eine Eigenschaft, z Der Titel eines Artikels ändert sich. Früher arbeitete ich früher, bevor ich zu AdvancedCollectionView wechselte, aber jetzt wirft der Event Raiser eine NullReferenceExcpetion.

So frage ich mich jetzt, ob es nicht wirklich eine Out-of-the-Box-Möglichkeit gibt, die einfache Aufgabe zu erledigen, einen ListView nach einer gebundenen Eigenschaft zu sortieren?

+0

, konnte ich wissen, wie Sie das tun „Früher habe ich die Sortierung in Code tun hinter.“? Meinst du, du willst es nur in xaml ohne Code machen? Selbst die 'AdvancedCollectionView' ist der Sortiercode hinterher, neben dem ein Paket referenziert werden muss, kann es Ihren Anforderungen entsprechen? –

+0

Da das Community Toolkit Open Source ist, können Sie einfach auf den Abschnitt verweisen, den Sie benötigen, um eine eigene Hilfsklasse zu erstellen. –

+0

Ich meinte, dass ich die ObservableCollection "manuell" mit einer Sort() - Erweiterungsmethode sortiert habe. – Patric

Antwort

0

Offenbar tritt das Problem mit der AdvancedCollectionView auf, da derzeit ein Fehler vorliegt, wenn keine Filtereigenschaft festgelegt wurde.

Ich ersetzen das NuGet-Paket mit der kompletten Quelle und debuggt es den Fehler in der ItemOnPropertyChanged zu lokalisieren, wo es die Nullreferenceexception auf Linie warf:

filterResult = _filter(item); 

weil „_filter“ null war.

reporeted ich den Fehler und es sieht aus wie ein Update in der Version 2.2 des Gemeinschafts Toolkit sein wird: https://github.com/Microsoft/UWPCommunityToolkit/issues/1686

Verwandte Themen