2010-07-15 58 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

的问题是,你是从哪个尚未完成事件内的事件退订。回退并重新评估为什么要添加到集合中,并确定是否有其他方式来完成您需要的操作。

相关问题