我有一个Dictionary,其ValueCollection由类组成,它在我的VM中作为属性公开,并绑定到UI上的DataGrid。我的问题是字典是异步填充的(它实际上是一个ObservableDictionary,因此我可以监视更改事件),并且网格中没有显示任何结果。我在VM中为DataGrid绑定的属性引发了PropertyChanged事件,只要项目被添加到Dictionary中,但无法获得任何结果。我已经证实事件确实发生了。
如果我使用直接的ObservableCollection而不是ObservableDictionary,一切都很好,我甚至不需要引发PropertyChanged,但我真的想用Dictionary来保存我的集合,以便在每个条目上保留一个唯一的键。 / p>
我做错了什么,或者是否有我可以使用的不同集合的解决方法?我也尝试在值集合上调用.ToObservable()或.ToEnumerable()进行绑定。
答案 0 :(得分:0)
问题是你的ObservableDictionary可能实现了INotifyCOllectionChanged(好),但你的ObservableDictionary.Values没有。
覆盖字典上的非泛型IEnumerable.GetEnumerator方法,只返回值而不是KeyValuePairs,并将字典绑定到网格。
答案 1 :(得分:0)
通过在我的VM中返回Dictionary.Values.ToList()而不仅仅是.Values,.Values.GetEnumerator()或.Values.ToObservable()来解决问题。我还必须在我的VM中提升PropertyChanged以获取返回列表的VM属性。