【发布时间】:2013-10-13 10:07:11
【问题描述】:
我使用以下字典:
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"); 不受影响。有没有其他方法(除了改变类型)来处理这个问题?
【问题讨论】:
-
您是否尝试过对字典的 Count 属性做同样的事情?
-
@user2760623。对字典的 Count 属性做同样的事情是什么意思?可以扩展吗?
-
通知 Dictionary.Count 属性的变化。
-
通知“不受影响”是什么意思?
-
@JonSkeet。我的意思是如果已经打开组合框,UI 中的列表不会改变。
标签: c# wpf mvvm dictionary inotifypropertychanged