-1

我使用以下字典:

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

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

一切正常。

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

只有当它从一开始就保持关闭时,更改才会出现在屏幕上。

我有一个地方可以将项目添加到字典中,然后我立即使用了该事件,propertychanged希望它会影响 UI:

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

但这并没有帮助(尽管事件并没有为空)。

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

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

4

1 回答 1

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; 

如果有人有更好的方法,我很想听听。

于 2013-10-13T10:52:57.753 回答