Ich habe eine Liste von Datenobjekten in meiner Windows Phone 7-Anwendung namens MyObjectList
, die ObservableCollection<MyObject>
erbt. Ich behalte die Liste im Speicher in einer öffentlichen Eigenschaft von App
namens MyObjects
. Mein Ziel ist es, die Daten an eine ListBox
zu binden und sie nach MyObject.Name
zu sortieren.
Zur Zeit habe ich ein ListBox
in XAML mit dem Namen MyObjectsList
und dem folgenden Code im Konstruktor, um es zu verknüpfen:
Das funktioniert großartig. Ich füge Elemente zu MyObjects
hinzu und sie werden in ListBox
angezeigt. Die Daten werden jedoch nicht nach Namen sortiert, wenn sie in der Liste angezeigt werden. Ich habe die folgende Änderung versucht, um die Daten zu sortieren:
Aber wenn ich das tue, sehe ich keine Objekte, die in ListBox
sortiert oder auf andere Weise reflektiert werden.
Was kann ich tun, damit, wenn ich ein Element zu meinem ObservableCollection
hinzufüge, es nach .Name
im ListBox
?
Das Problem mit Ihrem Beispiel ist die OrderBy-Methode, die anstelle einer ObservableCollection einen IoberedEnumerable-Objekttyp zurückgibt.
Hier können Sie etwas tun, ohne eine benutzerdefinierte Sammlung wie einige der anderen Antworten zu implementieren.
%Vor%Die anderen Antworten schlagen alle brauchbare Alternativen vor, aber das wird das Problem in der Frage lösen.
FWIW, in Silverlight 4 gibt es eine PagedCollectionView, aber Silverlight von Windows Phone 7 basiert auf Silverlight 3 und ist nicht verfügbar. Ich erwähne das nur, um Sie in Erwartung von WP7 auf SL4 aufmerksam zu machen.
Dies hilft Ihnen nicht bei Silverlight, aber für WPF 3.5 / 4 gibt es eine bessere Möglichkeit, dies zu tun, was CollectionView
Schauen Sie sich Ссылка an.
Es wird erläutert, wie ObservableCollection erweitert wird, um die zugrunde liegende Items.Sort () -Methode verfügbar zu machen und Listener dann zu benachrichtigen, dass sich die Auflistung geändert hat.
Auch Dieser Beitrag hier .. könnte Ihnen dabei helfen. Es verwendet CollectionView.
Tags und Links .net c# silverlight windows-phone-7 observablecollection