2012-02-29 24 views
0

我正在嘗試實現「消息/註釋」顯示。更新WPF MVVM應用程序中的ObservableCollections

該視圖由綁定到​​ObservableCollection(這些是帖子)的ListBox組成。我也是雙向綁定列表框的SelectedItem。

當前所選帖子的回覆也存儲在另一個ObservableCollection中。此集合中的每個項目都應該在選定的消息之後立即插入到Posts集合中。

屬性中的所有內容都更新正常。當這些列表被渲染時,糞便撞擊粉絲。

每次選擇一個新帖子,我必須做'.Insert()'而不是'.Add()'。即使在處理數千個帖子和幾百條評論時,這也會對性能造成嚴重的懲罰[無法接受]。

我想這樣做:'PostsCollection = newObservableCollectionWithPostsAndComments',但是這會導致整個列表框刷新並且SelectedItem變爲未選中狀態。

你應該如何處理動態插入到ObservableCollection中的項目,該項目綁定到ListBox而不重繪Listbox?

*除了新的項目正在顯示

編輯:我有我做了一個編碼錯誤輕微的感覺,但我不能顯示所有的源代碼在這裏。如果你能告訴我,如果我想要什麼,甚至可能,那會很棒。

+1

如果您發佈樣本測試代碼來複制您正面臨的問題 – 2012-03-01 06:25:50

+0

當您使用「ICollectionView」並綁定到它,然後排序降序? – 2012-03-01 18:24:28

回答

0

如果我正確理解您的問題,您在Observable集合中插入項目時遇到問題。實際上,在每次插入之後,集合將調用收集已更改的事件,並重新繪製UI。

解決這個問題的一種方法是從像ObservableCollectionEx這樣的ObservableCollectionEx派生一個新類,並使用像AddRange(IEnumerable items)這樣的方法在其中添加多個項目到集合中,但只引發一個集合已更改事件。這個例子是以下鏈接

http://xcalibursystems.com/2013/12/making-a-better-observablecollection-part-1-extensions/

其他方式,也許不是一個乾淨的,是與得到的一組項目創造新的ObservableCollection並將其分配給該列表框的ItemsSource的結合屬性。如果您實施INotifyPropertyChanged

相關問題