2012-10-11 32 views
1

我在服務器上有一些JSON API,我想用它來聊天。所以我使用HttpWebRequest, Respond,...和反序列化爲ObservableCollection<ChatMessage>。這一切都好。我有我的類被添加到datacontext,該類包含上面的集合(ObservableCollection<ChatMessage> entries,它綁定到列表框,一切都顯示正常。現在,如果我想在一段時間後重新加載服務器上的文件的內容,我做了我所做的一切第一次和entries更換收集到新的。但是,這不會致使火災PropertyChangedCollectionChanged和觀點仍難免收舊,所以what's最好的「修復」的呢?將ObservableCollection替換爲另一個未觸發PropertyChanged

回答

1

從技術上講,你沒有按收藏不會改變 - 它會被一個新的取代,所以CollectionChanged不會被解僱。

你將需要在你的包裝類上實現INotifyPropertyChanged,並且當你替換集合時,激發PropertyChanged前夕nt來通知用戶界面。

另一種解決方案是不取代集合,而是清除其項目並將新條目添加到該集合。您可以通過比較收集(新舊)和添加新條目/刪除那些不再位於新列表中的新條目,以更智能的方式完成此操作。

相關問題