WPF列表框显示重复的项目。怎么走动?

WPF列表框显示重复的项目。怎么走动?,wpf,asynchronous,listbox,backgroundworker,observablecollection,Wpf,Asynchronous,Listbox,Backgroundworker,Observablecollection,我有一个列表框,里面有一个嵌套的列表框。两者都将ObservableCollections作为其ItemsSource集,内部ListBox的集合是外部ListBox对象的成员 这些集合由从Web服务收集数据的BackgroundWorker填充。我必须从ObservableCollection更改为AsyncObservableCollection,以便能够从工作者代码中添加项。AsyncObservableCollection代码来自此处: 我的问题是,内部列表框一直显示重复的项目。如果它决

我有一个列表框,里面有一个嵌套的列表框。两者都将ObservableCollections作为其ItemsSource集,内部ListBox的集合是外部ListBox对象的成员

这些集合由从Web服务收集数据的BackgroundWorker填充。我必须从ObservableCollection更改为AsyncObservableCollection,以便能够从工作者代码中添加项。AsyncObservableCollection代码来自此处:

我的问题是,内部列表框一直显示重复的项目。如果它决定复制,它似乎总是复制第一项。我不知道为什么会这样。通过将事件侦听器连接到集合的CollectionChanged事件,我发现每个项目都可以触发一次事件

你有什么想法吗

谢谢,
Stephan

我发现问题是由AsyncObservableCollection引起的。很明显,它把一些事件搞砸了。
我最终在worker的ProgressChanged方法中将项目添加到集合中。

如果将项目资源绑定到AsyncObservableCollection,则必须使用VistualizingStackPanel来更正此问题:

<ListBox
 ItemTemplate="{StaticResource YourItemTemplate}"
 ItemsSource="{Binding Path=YourAsyncObservableCollection}" 
 ScrollViewer.CanContentScroll="False"
 ScrollViewer.HorizontalScrollBarVisibility="Auto"
 ScrollViewer.VerticalScrollBarVisibility="Disabled"
 Style="{DynamicResource YourListBoxStyle}">
 <ListBox.ItemsPanel>
  <ItemsPanelTemplate>
   <VirtualizingStackPanel Orientation="Vertical" />
  </ItemsPanelTemplate>
 </ListBox.ItemsPanel>
</ListBox>


您必须在此处向我们提供更多详细信息。试着把你的代码减少到最小的可能的例子,仍然显示这个问题,然后更新你的问题以包括所有的代码。不幸的是,我不能在一个小例子中重现这个行为。除此之外,我不允许将我的代码发布到网上,所以我想我必须自己处理这个问题。感谢所有无论如何都会帮忙的人;)你能再解释一下吗?我也有同样的问题。顺便说一句,这似乎是一个时间问题(如果我在向AsyncObservableCollection添加内容时等待100毫秒,则不会出现重影项目。奇怪-无论如何,我不明白你的解决方案,你能解释一下吗?你是否放弃了AsyncObservableCollection?