如何使用Filter集自动刷新ListCollectionView

时间:2014-05-04 23:32:05

标签: wpf data-binding observablecollection listcollectionview

我有一个ObservableCollection和一个ListCollectionView,它有一个Filter谓词集。 当我更改全局条件时,让我们说一个搜索文本,我可以在视图上调用.Refresh()来强制它刷新。但是当集合中的一个项目更改属性时,是否可以刷新该元素的可见性?让我们说声明过滤器取决于属性?

1 个答案:

答案 0 :(得分:4)

简短的回答是肯定的。

ListCollectionView在这里有两个感兴趣的属性

IsLiveFiltering是一个布尔值,它获取或设置一个值,指示是否启用实时过滤数据。

LiveFilteringProperties是一个字符串列表,其中包含指定实时过滤数据的属性的属性名称。

设置这两个属性将给出您所追求的结果。

这是一段代码片段,展示了如何在已部署的应用程序中设置过滤属性...

        if (_itemWrappersListCollectionView != null && _feedInfosListCollectionView!=null)
        {
            _itemWrappersListCollectionView.IsLiveFiltering = true;
            _itemWrappersListCollectionView.IsLiveSorting = true;
            _itemWrappersListCollectionView.LiveFilteringProperties.Add("FilterStatus");
            InitialiseExceptions();
            InitialiseSorts();
            InitialiseAgeFilter();
            InitialiseFeedCruds();
            _itemWrappersListCollectionView.Filter = ItemFilterDelegate;
        }

在此示例中,当在集合项上更改所谓的“FilterStatus”属性时,将立即在 ITEM 上调用过滤器谓词,而不会耗费大量时间。刷新'方法。

另见IsLiveFilteringRequested