我使用以下词典:
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");
不受影响。还有其他方法(除了改变类型)来处理这个问题吗?
答案 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;
如果某人有更好的方式我会喜欢听。