我綁定了一個ListView屬性,基本上包裝值集合(ICollection)在通用字典上。WPF綁定到IDictionary <int,MyType>。值不響應屬性更改?
當字典中的值發生變化時,我調用OnNotifyPropertyChanged(property)。我沒有看到屏幕上的更新,沒有綁定錯誤。
當我改變屬性getter返回Linq擴展dictionary.Values.ToList(),而不改變屬性的簽名(ICollection)它沒有問題。
爲什麼Values集合綁定並正確通知而沒有投影到IList <>?
有趣的,雖然我認爲這就是所謂的PropertyChanged完成。在大多數情況下(並且在大多數例子中),這被放置在設置器中,並且僅在值/參考改變時才被調用。這實際上正是我認爲我的方法可行的原因 - 我認爲PropertyChanged調用導致了更新,而不是值/參考的更改。 – 2010-04-21 19:12:34
有一些實現INotifyCollectionChanged的字典的例子。嘗試搜索ObservableDicitonary。 – 2010-04-21 19:23:15
@Phil @Andy是正確的,因爲WPF綁定系統將引用作爲優化來檢查。如果引用不改變,它不會更新綁定。這就是INotifyCollectionChanged接口存在的原因。 – 2010-04-21 19:25:06