0

我有一个字典,其 ValueCollection 由类组成,在我的 VM 中作为属性公开,并绑定到 UI 上的 DataGrid。我的问题是字典是异步填充的(它实际上是一个 ObservableDictionary,所以我可以监视更改事件),并且网格中没有显示任何结果。每当将项目添加到字典时,我都会在 VM 中为 DataGrid 绑定到的属性引发 PropertyChanged 事件,但无法获得任何结果。我已经验证事件确实会触发。

如果我使用直接的 ObservableCollection 而不是 ObservableDictionary,一切都很好,我什至不需要提升 PropertyChanged,但我真的想使用 Dictionary 来保存我的集合,以便在每个条目上保留一个唯一键。

我做错了什么,还是有一个我可以使用的不同集合的解决方法?我还尝试在值集合上调用 .ToObservable() 或 .ToEnumerable() 进行绑定。

4

2 回答 2

0

问题是您的 ObservableDictionary 可能实现了 INotifyCOllectionChanged (好),但您的 ObservableDictionary.Values 没有。

覆盖字典上的非通用 IEnumerable.GetEnumerator 方法以仅返回值而不是 KeyValuePairs 并将字典绑定到您的网格。

于 2011-08-25T14:19:19.653 回答
0

该问题通过在我的 VM 中返回 Dictionary.Values.ToList() 而不仅仅是 .Values、.Values.GetEnumerator() 或 .Values.ToObservable() 来解决。对于返回列表的 VM 属性,我确实必须在我的 VM 中提高 PropertyChanged。

于 2011-08-26T14:28:31.360 回答