階層データ テンプレートを使用して TreeView に表示しているモデル オブジェクトのツリーがあります。各モデル オブジェクトは、ValueConverter を使用してオンザフライで ViewModel オブジェクトに変換されますが、モデルのプロパティは階層データ テンプレートの子アイテムにバインドされたままです。
私が抱えている問題は、Model オブジェクトが子を辞書に格納することです。クライアント側で関心があるのは、キーではなく値です。ディクショナリは観察可能ではないため、私が探しているのは、理想的な世界では、ディクショナリをラップする方法です (または、より具体的には、ディクショナリが「値」プロパティで使用する内部 ValueCollection を観察可能にするためです) .
Dictionary のソースを調べて、反映できる隠しフックがあるかどうかを確認しましたが、何も表示されません。
誰にも提案がありますか?
編集:
私が望む動作は事実上これです:
var nonObservable = new Dictionary<Guid, object>();
var observableDictionary = new ObservableDictionary<Guid, object>(nonObservable);
observableDictionary.CollectionChanged += //Some event handler
nonObservable.Add(Guid.NewGuid, new object());
オブザーバブルでないディクショナリにオブジェクトを追加するときに、ラッパーでコレクション変更イベントを発生させたいと考えています。これにはおそらく、深い反省が必要になるでしょう。これは避けたいハックなアプローチですが、別の方法もあまり好きではありません。