2

我有一个带有过滤器谓词集的 ObservableCollection 和 ListCollectionView。当我更改全局条件时,比如说搜索文本,我可以调用.Refresh()视图强制刷新。但是,当集合中的一项更改属性时,是否可以仅刷新该元素的可见性?假设通过声明过滤器依赖于属性?

4

1 回答 1

7

简短的回答是肯定的。

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

于 2014-05-04T23:40:48.887 回答