2010-07-15 69 views
3

更改集合,我希望它被改變後更新集合,但我似乎無法從這一例外獲得「離開」:從CollectionChanged事件

一個CollectionChanged和PropertyChanged事件期間

無法更改的ObservableCollection。

內部事件處理程序我在更改任何內容之前取消訂閱集合已更改的事件,以防止發生無限循環,並且在更改後我再次訂閱相同的事件。

private void CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
{ 
    data.CollectionChanged -= CollectionChanged; 
    data.Add("Item"); 
    data.CollectionChanged += CollectionChanged; 
} 

我試圖使用Dispatcher調用data.Add(「項目」),但沒有運氣:(

+0

這裏最好的解決方案是重做你正在做的事情 - 這是不常見的在CollectionChanged事件處理程序中間的一個集合,無論處理程序掛鉤/解除掛鉤。基本上,這個代碼有幾種不同的方式。 – slugster 2010-07-15 12:46:12

+0

爲了讓我更加了解我嘗試完成的服務尋呼機。尋呼機被掛鉤到收藏頁面,並且當頁面被改變時,收藏改變。此時,我向後端請求帶有頁面索引的數據,並在返回時 - 清除收集並填充新數據。我使用Telerik的這個RadQueryableCollectionView,它允許你說沒有真正的物品在收藏和物品總數中有更多的物品。如果由於事件處理程序完成而進行服務調用(異步),則一切正常。但是,當使用模擬 - 數據立即返回,你留在事件內... – Kestutis 2010-07-15 13:23:43

回答

1

的問題是,你是從哪個尚未完成事件內的事件退訂。回退並重新評估爲什麼要添加到集合中,並確定是否有其他方式來完成您需要的操作。

相關問題