我观察到 WPF ItemsControls 的奇怪行为:如果将 ItemsSource 设置为实现INotifyCollectionChanged
然后设置ItemsSource
为空,则CollectionView
创建它是为了向 ItemsControl 提供数据,但它仍然监听CollectionChanged
- 源对象的事件。
如果现在通过不同的线程更改源集合,则CollectionView
抛出异常(不附加到任何控件)。
虽然我明白为什么会发生这种情况,但我真的很难解决这种情况。
因此主要问题是,我怎样才能摧毁一个CollectionView
让它不再听CollectionChanged
-事件。或者我如何禁用它/分离底层集合。
请注意:所描述的行为不ObservableCollection
。源对象是一个IEnumerable
T 和实施INotifyCollectionChanged
.
您正在寻找CollectionView.DetachFromSourceCollection() https://msdn.microsoft.com/en-us/library/system.windows.data.collectionview.detachfromsourcecollection(v=vs.110).aspx method:
var collectionView = CollectionViewSource.GetDefaultView(yourEnumerable) as CollectionView;
collectionView.DetachFromSourceCollection();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)