繁体   English   中英

使用 ICollectionview 在 ObservableCollection 中搜索和过滤数据

[英]Search and Filter data in ObservableCollection with ICollectionview

我使用ICollectionViewObservableCollection中搜索 程序运行良好,可以进行搜索操作

public ICollectionView ItemsView => CollectionViewSource.GetDefaultView(DataList);
ItemsView.Filter = o => Filter(o as PackageModel);

private bool Filter(PackageModel item)
        {
            return SearchText == null
                       || item.Name.IndexOf(SearchText, StringComparison.OrdinalIgnoreCase) != -1
                       || item.Publisher.IndexOf(SearchText, StringComparison.OrdinalIgnoreCase) != -1;

        }

现在我想过滤数据网格中的数据 例如, IsInstalled = true的项目

public bool IsShowOnlyInstalledApps
        {
            get => _isShowOnlyInstalledApps;
            set
            {
                SetProperty(ref _isShowOnlyInstalledApps, value);
                if (value)
                {
                    var filter = new Predicate<object>(item => ((PackageModel)item).IsInstalled);
                    ItemsView.Filter = filter;
                }
                else
                {
                    ItemsView.Filter = null;
                }
            } 
        }

我可以看到数据网格中的项目被过滤但是搜索操作不再有效

用这个:

return SearchText == null
                       || (item.Name.IndexOf(SearchText, StringComparison.OrdinalIgnoreCase) != -1)
                       || (item.Publisher.IndexOf(SearchText, StringComparison.OrdinalIgnoreCase) != -1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM