2010-12-28 6 views
2

ObservableCollectionをSilverlightで使用すると、データが変更されたときにUIが自動的に更新されるため、効果的です。しかし、異なるIEnumerable LINQクエリで表現された、データのさまざまなビュー全体を表示するとどうなりますか?私の現在のアプローチは、DataContextINotifyPropertyChangedを実装し、バッキングコレクションCollectionChangedイベントに登録し、それに応じてプロパティ変更イベントを発生させることです。ObservableQuery for Silverlight?

しかし、これは何度も何度も何度も何度もやり直すことです。私が本当に欲しいのは、クエリと観測可能なデータソースを組み合わせたObservableQueryです。これはすでに存在しますか?もしそうでなければ、Silverlightのために私自身のロールバックをしてObservableCollectionと同じ方法で処理する必要がありますか? CollectionChangedイベントで十分ですか?

(私はWindowsの携帯電話7用のSilverlightの中で最も興味を持っています)

答えて

1

あなたが記述することは本当になどは存在しませんが、あなたはCollectionViewSource(編集)にあなたのIEnumerable<xx>を渡す場合は、いくつかを得ることができます記述された特徴のこれは、ViewModelタイプのパターンにはあまり適していません。手動で作業するためには、いくつかのリーバを手動で引っ張る必要があるからです。

もう1つの方法は、Reactive Frameworkを簡単に見てみることです。現在、CTP(またはベータ版)ですが、SilverLightにも実装されています。これは、IEnumerableの基本的に非同期の "プッシュ"バージョンである、LINQのクエリー可能性、IObservable<xx>オブザーバブルストリームまたはコレクション(ObservableCollectionと混同しないでください)を提供します。

これは、長期間にわたってUIへのデータ読み込みが遅い場合に非常に効果的です。たとえば、イベントを観測可能なストリームに変換し、そこからLINQクエリを開始してください。

この優れたCh9ビデオwをご覧ください。 Wes DyerがUIでそれを使用する方法を説明しています: http://channel9.msdn.com/Blogs/J.Van.Gogh/Writing-your-first-Rx-Application

関連する問題