2

之前在 CollectionView 上实现过滤,我用它来显示数据网格中的行数;

<TextBlock Text="{Binding ElementName=dataGrid1, Path=ItemsSource.Count}" />

从那以后,我已经实现了一个过滤器;

ICollectionView cvs = CollectionViewSource.GetDefaultView(datagrid1.ItemsSource);
cvs.Filter = new Predicate<object>(FilterMethod);
...
public bool FilterMethod(object item) {
    // conditionally returns true/false
}

当过滤器从视图中删除项目时,上面的 TextBlock 仍然显示未过滤的计数。我怎样才能让上面的 TextBlock 显示过滤器的行数?

4

1 回答 1

3

问题是过滤器仅应用于集合视图,而不是项目源。

你可以做两件事之一:

  1. 绑定到集合视图计数(确保其 INPC)。
  2. 绑定到项目控件 items.count 属性。

这样计数将与用户看到的相同。

于 2011-01-05T22:58:35.050 回答