2011-10-06 40 views
0

我收到了一个ListViewItemsSource集合,其中ObservableCollection<string>设置。 而且,ListView包含在其ListView.Items.Filter属性过滤器(作为Predicate<bool,object>如何强制ListView手动重新使用它的.Items.Filter视图?

所以我们可以说有,当过滤器可以改变它的行为不改变自己的参考条件。

而当这些条件改变我需要让ListView知道它有根据新的过滤器,以重建其观点。

我已经想通唯一的解决办法是

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

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

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

回答

1

您需要获取ListView绑定的收集视图(ICollectionView)和Refresh()它。这是我不清楚你是如何绑定到您的数据,但您可以:

  • 绑定到一个集合视图明确
  • 绑定到一个集合,具有控制自动绑定到默认的集合视图

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

CollectionViewSource.GetDefaultView(theCollection).Refresh(); 
+0

我必将像这样:'ListView.ItemsSource =新的ObservableCollection (.. );' – AgentFire

+0

谢谢,这对我有效。 – AgentFire

+0

如果它适合您,请将其标记为答案。 Tkcr –

相关问题