2009-03-22 6 views
0

私は2つのリストボックスをすべて1つのプロジェクトに、1つはアクティブなプロジェクトのみを持っています。SilverlightのViewModelコレクションバインディング

1つのobservablecollectionがあり、その中のすべてのプロジェクトがすべてのプロジェクトのリストボックスにバインドされています。他のリストボックスに何をバインドするのですか?私は新しいコレクションを作成し、アクティブなコレクションをソートする必要がありますか?新しいアクティブプロジェクトを追加すると、両方のコレクションに追加する必要があります。

私が探しているのは、両方のリストボックスが更新されるように、すべてのプロジェクトでコレクションに新しいプロジェクトをアタッチすることです。そんなことをすることは可能ですか?

答えて

3

2つのコレクションがある場合は、マスターコレクションのCollectionChangedイベントにサブスクライブし、その通知を使用して他のリストと同期させることができます。

+0

私に例を挙げてください。 –

2

あなたはCollectionViewでそれを実行できるはずです。 CollectionViewはソートとフィルタリングをカプセル化します。

あなたがメインコレクションの非アクティブなプロジェクトをフィルタリングし、そのビューに2番目のリストをバインドするCollectionViewを作成する場合、あなたは良いことがあります。

編集:完全なタイトルのみを読んで、Silverlightについて話していたら... SilverlightにはICollectionViewやCollectionViewSourceのパブリックな実装はなく、Datagridのみがこのインターフェイスを使用します。 アップに投票した人はキャンセルしてください。これは質問に対する良い答えではありません。

私は推測しています。今は2つのコレクションがあり、最初のもの(完全なもの)のイベントを聴くと - アクティブなアイテムが追加/削除されたときに2番目のアイテムから追加/削除する - PropertyChangedを追加/削除する追加/削除された項目のハンドラ および - Activeプロパティが変更されたときに2番目のコレクションに追加/削除します。 これは面倒ですが、述語でフィルタリングされたコレクションが必要な場合には、それを再利用するのに十分なパッケージ化可能性があります。

+0

SilverlightにCollectionViewをインスタンス化するCollectionViewSourceはありません。 –

+0

はい、私はそれを実現しました。私は "silverlight"と言ったタイトルの部分(一番上の大きな文字...)を見逃してしまった。申し訳ありません。 –

0

マスターリストとアクティブなプロジェクトの2つのコレクションを使用します。 はその後、プロジェクトがアクティブから非アクティブと副に行くとき、あなたは機会を扱うことができるように、プロジェクトのオブジェクトにイベントを追加する必要があります。また、すべてのactions

を扱う、マスタリストのcollection changedイベントをサブスクライブコレクションが変更されたイベントは、コレクションに変更が含まれているときでなく変更されたときにのみ発生します。

関連する問題