2011-06-20 18 views
1

私は自分のオブジェクトモデルを説明し、次に何をしたいのかを説明します。コレクション内のコレクションを購読するニースRxの方法

これはSilverlightアプリケーションであり、これらはUI要素にバインドされたモデルオブジェクトです。

契約にはTradingBranchのコレクションがあり、支店を追加または削除することができます。ブランチにはProductのコレクションがあります。

agreement.Branches 
     .SelectMany(x => x.Products) 
     .Distinct() 

これらのコレクションは、ブランチと製品のマトリックスによって駆動されます。複数のブランチから同じ製品を選択することができます。したがって、Distinct。

本質的に、ブランチのいずれかで使用できるものとして選択されたすべての製品のリストからユーザーが選択できるようにします。私はマトリックスに変更があったときにこのリストを更新したい。

したがって、ブランチにCollectionChangedハンドラを追加するのではなく、Productsコレクションでリッスンするハンドラを増やし、製品が既に存在しているかどうかを確認し、ブランチが削除されたときなどにサブスクライブする必要があるなど、私は単純に「LINQのこの部分を聞いて」、そして変更したときにListBoxをバインドしているこの他の観測可能なコレクションを更新するために使用できる素晴らしいRx構文がありました。

答えて

0

名前の類似性にもかかわらず、IObservableとObservableCollectionは完全に無関係であり、残念なことに互換性もありません。彼らはコレクションを観察する2つの非常に異なるモデルを持っています。

Bindable LINQをご覧ください。 ObservableCollectionのLINQクエリでObservableCollectionが再び発生するように、LINQからObservableCollectionを定義しようとします。しかし、プロジェクトは死んでいるようだが、私は推奨交換をまだ使用していない(Obtics)。

関連する問題