DataBinding/WPF C# の一般的な Observable Dictionary クラス 質問する

DataBinding/WPF C# の一般的な Observable Dictionary クラス 質問する

私は C# で WPF データバインディング用の Observable Dictionary クラスを作成しようとしています。Andy の優れた例をここで見つけました:WPF での辞書を使用した双方向データ バインディング

それに従って、コードを次のように変更してみました。

class ObservableDictionary : ViewModelBase
{
    public ObservableDictionary(Dictionary<TKey, TValue> dictionary)
    {
        _data = dictionary;
    }

    private Dictionary<TKey, TValue> _data;

    public Dictionary<TKey, TValue> Data
    {
        get { return this._data; }
    }

    private KeyValuePair<TKey, TValue>? _selectedKey = null;
    public KeyValuePair<TKey, TValue>? SelectedKey
    {
        get { return _selectedKey; }
        set
        {
            _selectedKey = value;
            RaisePropertyChanged("SelectedKey");
            RaisePropertyChanged("SelectedValue");
        }
    }

    public TValue SelectedValue
    {
        get
        {
            return _data[SelectedKey.Value.Key];
        }
        set
        {
            _data[SelectedKey.Value.Key] = value;
            RaisePropertyChanged("SelectedValue");
        }
    }
}

}

残念ながら、まだ「一般的な」辞書オブジェクトを渡す方法がわかりません。何かアイデアはありますか?

ありがとう!

乾杯

ベストアンサー1

本当に を作りたい場合は、と のObservableDictionary両方を実装するクラスを作成することをお勧めします。のメソッドを実装するために を内部的に使用すれば、 を自分で再実装する必要がなくなります。IDictionaryINotifyCollectionChangedDictionaryIDictionary

内部がいつDictionary変更されるかを完全に把握しているので、その知識を使用して を実装できますINotifyCollectionChanged

おすすめ記事