2011-08-25 57 views
0

我有一個字典,其ValueCollection由類組成,這些類在我的虛擬機中作爲屬性公開,並綁定到UI上的DataGrid。我的問題是Dictionary是異步填充的(它實際上是一個ObservableDictionary,所以我可以監視更改事件),並且沒有結果出現在網格中。我在VM中爲DataGrid綁定的屬性引發PropertyChanged事件,只要將某項添加到Dictionary中,但無法獲得任何結果。我已經證實事件確實發生。綁定到詞典ValueCollection

如果我使用直觀的ObservableCollection而不是ObservableDictionary,一切都很好,我也不需要提高PropertyChanged,但我真的想用Dictionary來保存我的集合以保持每個條目上的唯一鍵。

我做錯了什麼,或者是否有與我可以使用的不同集合的解決方法?我也試着在綁定的值集合上調用.ToObservable()或.ToEnumerable()。

回答

0

該問題是通過返回Dictionary.Values.ToList()在我的虛擬機而不是僅僅.Values,.Values.GetEnumerator()或.Values.ToObservable()來解決的。我確實必須在我的VM中爲VM屬性返回列表仍然引發PropertyChanged。

0

問題是您的ObservableDictionary可能實現INotifyCOllectionChanged(好),但您的ObservableDictionary.Values不。

覆蓋字典上的非泛型IEnumerable.GetEnumerator方法,僅返回值而不是KeyValuePairs,並將字典綁定到網格。

+0

我使用[Dr.WPF]提供的ObservableDictionary(http://drwpf.com/blog/2007/09/16/can-i-bind-my-itemscontrol-to-a- dictionary/)。它爲值觸發了一個PropertyChanged事件,並且我已經驗證它確實會觸發。儘管如此,我仍然會給你一個想法,看看會發生什麼。 – Random