2009-04-23 91 views
3

我有一個列表<Foo>來自非WPF程序集,我試圖將其數據綁定到WPF <ListBox>。最初,列表項正確顯示,但是當我將新項目添加到列表<Foo>時,列表框不會添加列表項目。如何告訴列表框重新綁定/更新/刷新數據並顯示新項目?WPF數據綁定手冊更新

回答

10

雖然使用一個ObservableCollection是最好的方式,回答問題的實際,手動更新的方法是調用BindingExpression.UpdateTarget

4

您應該使用ObservableCollection來代替,然後您會自動獲取更新。

+0

我可以在非WPF程序集中使用ObservableCollection嗎? – harriyott 2009-04-23 15:57:09

+0

是的,如果你包含PresentationBase(我認爲,該類在System.Collections.ObjectModel中,但impl在PresetationBase中);或者如果你想獲得相同的功能,通過實現INotifyCollectionChanged來創建你自己的ObservableCollection。 – Scott 2009-04-23 16:13:33

2

感謝張貼這個答案。即使您使用ObservableCollection,也可能需要使用BindingExpression.UpdateTarget。如果集合不在UI線程中,則可能是這種情況。我一直在編寫一些多線程的WPF應用程序,當我將模型代碼移動到另一個線程時,我發現自己不得不去除數據綁定,因爲我不能指望更新系統真正起作用。儘管我發現數據綁定是一個很好的概念,但我認爲數據綁定系統的不透明性一直是我採用它的真正障礙。 (對不起,咆哮!)再次感謝,亞當。