2010-12-28 8 views
2

Die Verwendung von ObservableCollection mit Silverlight funktioniert großartig, da die Benutzeroberfläche automatisch aktualisiert wird, wenn sich die Daten ändern. Aber was, wenn ich eine ganze Reihe verschiedener Ansichten der Daten zeige, dargestellt als verschiedene IEnumerable LINQ-Abfragen? Mein derzeitiger Ansatz ist es, die DataContext implementieren INotifyPropertyChanged, und registrieren Sie für die Backing-Sammlungen CollectionChanged Ereignis, und feuern Sie die Eigenschaft Ereignis geändert entsprechend.ObservableQuery für Silverlight?

Dies ist jedoch eine Art von Wiederholung immer wieder zu tun. Was ich wirklich will, ist eine ObservableQuery, die eine Abfrage und eine beobachtbare Datenquelle kombiniert. Gibt es das schon? Wenn nicht, was muss ich tun, wenn ich mein eigenes für Silverlight aufbringe, um es wie ein ObservableCollection zu behandeln? Ist ein Ereignis CollectionChanged ausreichend?

(Ich bin am meisten interessiert Silverlight für Windows Phone 7.)

Antwort

1

Was Sie beschreiben, nicht wirklich als solche existieren, aber wenn Sie Ihre IEnumerable<xx> in eine CollectionViewSource (edit) übergeben Sie ein paar bekommen der beschriebenen Merkmale. Dies passt jedoch nicht so gut zu einem ViewModel-Muster, da Sie einige Leavers manuell ziehen müssen, damit es funktioniert.

Eine andere Möglichkeit ist ein kurzer Blick auf die Reactive Framework. Es ist derzeit CTP (oder vielleicht Beta), ist aber auch für SilverLight implementiert. Dies gibt Ihnen eine LINQ abfragbare, IObservable<xx> Observable Stream oder Collection (nicht mit der ObservableCollection verwechselt werden), das ist im Grunde eine asynchrone, "Push" -Version von IEnumerable.

Es funktioniert sehr gut mit langsamem Laden von Daten in UI über einen langen Zeitraum. Sie können z.B. Konvertieren von Ereignissen in einen beobachtbaren Stream und starten Sie Ihre LINQ-Abfrage von dort ect ..

Schauen Sie sich diese hervorragende Ch9 Video w. Wes Dyer erklärt, wie man es mit UI verwendet: http://channel9.msdn.com/Blogs/J.Van.Gogh/Writing-your-first-Rx-Application

Verwandte Themen