2009-09-23 69 views
4

我試圖推動一個更新集合,我已經綁定了一個列表框。由於列表可能會變得相當大,我試圖關閉更新(排序等),直​​到我完成插入所有新項目。WPF/DeferRefresh與綁定列表框

我想通:

using (col.DeferRefesh()) 
{ 
    .. add the items 
} 

但是這引發了一個異常說我不能添加/刪除項目,而DeferRefresh()上。 有沒有適合我正在做的事情?

回答

1

從CollectionView添加或刪除項目將導致InvalidOperationException作爲集合視圖的操作設置IsAddingNewIsEditingItem標誌爲true。

允許您在DeferRefresh()中執行的操作是更改排序說明。

This blog給出了關於DeferRefresh()的用途。另外,當您實際更改collectionview中的值時,延遲集合視圖刷新是非常矛盾的。

+3

有一些情況當你進行一系列更改時,你想暫停更新到collection和collectionview – cordialgerm 2011-08-18 04:23:32

+0

鹹菜 - 我完全同意!所以這些更改將在UI級而不是代碼級完成。一旦我們退出使用塊。 EndDefer()會自動調用以提交您所做的更改。希望有所幫助。 – 2011-08-18 05:10:36

0

要做到這一點,你將需要實現/導出自己的收藏,並在集合級別實施延遲刷新功能再火的集合更改事件與重置爲變更類型時延遲刷新完成