gpt4 book ai didi

wpf - 异步 CollectionViewSource 过滤?

转载 作者:行者123 更新时间:2023-12-03 17:17:43 30 4
gpt4 key购买 nike

我真的很大ObservableCollection<MyItem>我需要对其提供用户友好的过滤。

public static async Task RefilterViewAsync(this ItemsControl @this, Predicate<object> compareLogic)
{
await Task.Run(
() =>
{
var collectionView = CollectionViewSource.GetDefaultView(@this.ItemsSource);
if (collectionView.CanFilter)
{
collectionView.Filter = compareLogic;
}
else throw new InvalidOperationException("Filtering not supported...");
collectionView.Refresh();
});
}

..问题是上面的代码由于某些原因不起作用。在 UI 线程上进行拟合大约需要 1 分钟。任何想法如何实现异步过滤,至少能够显示一些“处理..”动画来帮助用户克服这个问题?

最佳答案

如果您有大量 ObservableCollection你想异步过滤掉它然后自己做。 AFAIK 没有异步绑定(bind)支持。

我的意思是创建另一个 ObservableCollection 类型的属性;这将是您过滤后的集合。不是绑定(bind)实际集合,而是将过滤后的集合绑定(bind)到 ItemsControl .

然后异步实现自己的过滤逻辑(可能在另一个线程中),最后设置过滤的集合属性。绑定(bind)引擎将启动并相应地更新 UI。
我之前在我的一个项目中成功地使用了它。

关于wpf - 异步 CollectionViewSource 过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091268/

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