之前在 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
}
当过滤器从 View 中删除项目时,上面的 TextBlock 仍然显示未过滤计数。如何让上面的 TextBlock 显示过滤结果的行数?
最佳答案
问题在于过滤器仅应用于 Collection View ,而不应用于项目源。
您可以执行以下两件事之一:
- 绑定(bind)到 Collection View 计数(确保其 INPC)。
- 绑定(bind)到项目控件的 items.count 属性。
这样计数将与用户看到的相同。
关于wpf - 应用 CollectionView 筛选器后如何绑定(bind) DataGrid 行计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4609953/