Wpf 如何强制ListView使用其.Items.Filter手动重新创建视图?

Wpf 如何强制ListView使用其.Items.Filter手动重新创建视图?,wpf,listview,filter,Wpf,Listview,Filter,我得到了一个带有itemsource集合的ListView,其中设置了observedcollection。 而且,ListView在其ListView.Items.filter属性中包含一个过滤器(作为谓词) 因此,假设过滤器可以在不更改自身引用的情况下更改其行为 当这些条件发生变化时,我需要让ListView知道它必须根据新的过滤器重建视图 我认为唯一的解决办法是 ListView.Items.Filter = ListView.Items.Filter; 这是错误的,但仍然有效。使用筛选

我得到了一个带有
itemsource
集合的
ListView
,其中设置了
observedcollection
。 而且,
ListView
在其
ListView.Items.filter
属性中包含一个过滤器(作为
谓词

因此,假设过滤器可以在不更改自身引用的情况下更改其行为

当这些条件发生变化时,我需要让
ListView
知道它必须根据新的过滤器重建视图

我认为唯一的解决办法是

ListView.Items.Filter = ListView.Items.Filter;
这是错误的,但仍然有效。使用筛选器再次更新每个项目


那么有没有正确的解决方案?

您需要掌握绑定了
列表视图的集合视图(
ICollectionView
),并对其进行
刷新()
操作。我不清楚您是如何绑定到数据的,但您可以:

  • 显式绑定到集合视图
  • 绑定到集合并使控件自动绑定到默认集合视图
听起来你已经做了后者,在这种情况下,你可以使用:

CollectionViewSource.GetDefaultView(theCollection).Refresh();

我是这样装订的:
ListView.ItemsSource=newobservetecollection(…);
对。差点忘了:-[