1

階層データ テンプレートを使用して 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());

オブザーバブルでないディクショナリにオブジェクトを追加するときに、ラッパーでコレクション変更イベントを発生させたいと考えています。これにはおそらく、深い反省が必要になるでしょう。これは避けたいハックなアプローチですが、別の方法もあまり好きではありません。

4

1 に答える 1