gpt4 book ai didi

wpf - 如何销毁或分离 CollectionView

转载 作者:行者123 更新时间:2023-12-01 11:34:44 24 4
gpt4 key购买 nike

我观察到 WPF ItemsControls 的一个奇怪行为:如果将 ItemsSource 设置为实现 INotifyCollectionChanged 的对象,然后将 ItemsSource 设置为 null,则 为向 ItemsControl 提供数据而创建的 CollectionView 仍然监听源对象的 CollectionChanged 事件。
如果现在通过不同的线程更改了源集合,则 CollectionView 会抛出异常(不附加到任何控件)。虽然我明白为什么会这样,但我真的很难解决这个问题。

因此,主要问题是,我怎样才能销毁 CollectionView,使其不再监听 CollectionChanged 事件。或者我怎样才能禁用它/分离底层集合。

请注意:所描述的行为不适用于 ObservableCollection。源对象是 T 的 IEnumerable 并实现了 INotifyCollectionChanged

最佳答案

您正在寻找 CollectionView.DetachFromSourceCollection()方法:

var collectionView = CollectionViewSource.GetDefaultView(yourEnumerable) as CollectionView;
collectionView.DetachFromSourceCollection();

关于wpf - 如何销毁或分离 CollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28439865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com