私のアプリケーションのモデルには、それぞれが「子」のリストを参照する「親」のリストがあります(たとえば、それぞれがプレーヤーのリストを含むフットボールチームのリスト)。
このリストをツリービューで視覚化します。ツリー用のviewmodelクラスとfootballteam用のviewmodelクラスを作成しました(これを「footballteamViewModel」と呼びましょう)。ツリーのクラスは、footballteamViewModel-itemsを含むObservableCollectionを保持します。ツリーのitems-sourceは、このObservableCollectionです。初期化中に、モデル内のすべてのフットボールチームに対して対応するfootballteamViewModelオブジェクトを作成し、それをObservableCollectionに追加します。
問題は、モデル内のフットボールチームのリストをツリーの外側から変更できるため、ツリーを更新したいということです。したがって、誰かがモデルのリストからフットボールチームを削除した場合、footballteamViewModel-itemsのObservableCollection内の対応するアイテムを削除する必要があります。
モデルのフットボールチームのリストをビューに直接バインドすることはできません。そのため、モデル内のコレクションが変更されるたびに、ViewModel内のObservableCollectionを何らかの方法で更新する必要があります。
これを処理する私の方法は、モデルでObservableCollectionを使用し、ViewModelのcollectionChanged-eventに登録することです。これにより、モデルコレクションが変更されるたびにViewModel(footballteamViewModelオブジェクトのObservableコレクション)を更新します。しかし、これは「正しい」とは感じません。もっと良い方法はありますか?
これを入力しているときに、まったく同じ問題を説明する別の投稿を見つけました:WPF / MVVM:ドメインモデルコレクションをViewModelに委任します。そこでの答えは、私がこの問題を解決する方法が完全に間違っているわけではないことを私に促しますが、それでも別の方法があるのだろうかと思います。
編集:あなたが提供した最初の回答から、私の質問に対する明確な回答はないと思います。それらはすべて役に立ちましたので、それらすべてを読む価値があります。Bindable Linq / Continuous Linq / Opticalsフレームワークを参照して答えをマークするだけです。これは、私の質問に最も遭遇する他の人に役立つと思うからです。