我正在尝试使用 ObservableDictionary 的以下实现: ObservableDictionary (C#)

当我在将字典绑定(bind)到 DataGrid 时使用以下代码时:

ObserveableDictionary<string,string> dd=new ObserveableDictionary<string,string>();
....
dd["aa"]="bb";
....
dd["aa"]="cc";

dd["aa"]="cc"; 我收到以下异常
Index was out of range. Must be non-negative and less than the size of the
collection. Parameter name: index

此异常在 CollectionChanged(this, new NotifyCollectionChangedEventArgs(action, newItem, oldItem) 中的以下方法中抛出:
private void OnCollectionChanged(NotifyCollectionChangedAction action, KeyValuePair<TKey, TValue> newItem, KeyValuePair<TKey, TValue> oldItem)
{
  OnPropertyChanged();

  if (CollectionChanged != null) CollectionChanged(this, new NotifyCollectionChangedEventArgs(action, newItem, oldItem));
}
index 参数似乎对应于 KeyValuePair<TKey, TValue> oldItem
KeyValuePair<TKey, TValue> 怎么会超出范围,我应该怎么做才能使它工作?

最佳答案

类似的数据结构,绑定(bind)到 Dictionary 类型集合

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

它提供了一个新的数据结构 ObservableDictionary 并在底层 Dictionary 发生任何更改时触发 PropertyChanged

10-07 15:22