PropertyChanged不受集合更改的影响

时间:2013-10-13 10:07:12

标签: c# wpf mvvm dictionary inotifypropertychanged

我使用以下词典:

private Dictionary<string, string> _myDic;
public Dictionary<string, string> MyDic
{
   get
   {
       return _myDic;
   }
   set
   {
      if (_myDic!= value)
      {
         _myDic= value;
         NotifyPropertyChanged("MyDic");
      }
    }
}

在我看来是绑定到组合框。

一切正常。

问题是当我添加项目时,如果已经打开组合框,则不会更新。

只有从开头关闭时,屏幕上才会显示更改。

我有一个地方可以将项目添加到字典中,并立即使用事件propertychanged,希望它会影响用户界面:

MyDic.Add(strK, strV);
NotifyPropertyChanged("MyDic");

但它没有帮助(尽管事件没有出现)。

我理解这是因为它是集合中的变化,而不是对象本身。我的问题是,由于各种原因,我无法将此变量的类型更改为cutom ObservableDictionary。

我的问题是为什么NotifyPropertyChanged("MyDic");不受影响。还有其他方法(除了改变类型)来处理这个问题吗?

1 个答案:

答案 0 :(得分:0)

我找到了一种有点原始的方式。但它确实奏效了。

我创建了另一个字典,我将该项添加到其中。

然后我将字典改为本地词典:

Dictionary<string, string> _dic = new Dictionary<string, string>();
foreach (var str in MyDic)
   _dic.Add(str.Key, str.Value);
 _dic.Add(strK, strV);
  MyDic= _dic; 

如果某人有更好的方式我会喜欢听。