ObservableDictionary for c#

binding, c#, dictionary, inotifypropertychanged, wpf

Solution

Similar data structure, to bind to Dictionary type collection

http://drwpf.com/blog/2007/09/16/can-i-bind-my-itemscontrol-to-a-dictionary/

It provides a new Data structure ObservableDictionary and fires PropertyChanged in case of any change to underlying Dictionary.

Problem

I'm trying to use following implementation of the ObservableDictionary: ObservableDictionary (C#). When I'm using following code while binding the dictionary to a DataGrid: ``` ObserveableDictionary<string,string> dd=new ObserveableDictionary<string,string>(); .... dd["aa"]="bb"; .... dd["aa"]="cc"; ``` at `dd["aa"]="cc";` I'm getting following exception ``` Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index ``` This exception is thrown in `CollectionChanged(this, new NotifyCollectionChangedEventArgs(action, newItem, oldItem)` in the following method: ``` private void OnCollectionChanged(NotifyCollectionChangedAction action, KeyValuePair<TKey, TValue> newItem, KeyValuePair<TKey, TValue> oldItem) { OnPropertyChanged(); if (CollectionChanged != null) CollectionChanged(this, new NotifyCollectionChangedEventArgs(action, newItem, oldItem)); } ``` The `index` param seems to correspond to `KeyValuePair<TKey, TValue> oldItem`. How can `KeyValuePair<TKey, TValue>` be out of range, and what should I do to make this work?

Original source

Related problems