首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步CollectionViewSource过滤?

异步CollectionViewSource过滤?
EN

Stack Overflow用户
提问于 2016-01-29 18:13:29
回答 1查看 3.2K关注 0票数 6

我有非常大的ObservableCollection<MyItem>,我需要提供用户友好的过滤。

代码语言:javascript
复制
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();
        });
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-29 18:38:29

如果您有一个庞大的ObservableCollection,并且希望异步地过滤掉它,那么您自己去做。不支持异步绑定AFAIK。

我的意思是创建另一个类型为ObservableCollection的属性;这将是您经过筛选的集合。与其绑定实际的集合,不如将筛选的集合绑定到ItemsControl

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35091268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档