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

时间:2011-10-06 07:42:42

标签: wpf listview filter

我收到ListViewItemsSource集合,其中设置了ObservableCollection<string>。 并且,ListView在其ListView.Items.Filter属性中包含一个过滤器(作为Predicate<bool,object>

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

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

我认为唯一的解决方案是

ListView.Items.Filter = ListView.Items.Filter;

这是错误的,但它仍然有效。使用过滤器再次更新每个项目。

那是否有正确的解决方案?

1 个答案:

答案 0 :(得分:1)

您需要暂停ICollectionView绑定的集合视图(ListView)和Refresh()它。我不清楚你如何绑定你的数据,但你可以:

  • 明确绑定到集合视图
  • 绑定到集合并让控件自动绑定到默认集合视图

听起来你已经完成了后者,在这种情况下你可以使用:

CollectionViewSource.GetDefaultView(theCollection).Refresh();