【问题标题】:How to auto refresh the ListCollectionView with a Filter set如何使用过滤器集自动刷新 ListCollectionView
【发布时间】:2014-05-04 23:32:04
【问题描述】:

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

【问题讨论】:

    标签: wpf data-binding observablecollection listcollectionview


    【解决方案1】:

    简短的回答是肯定的。

    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

    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 2013-05-17
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多