-->

How can I bind DataGrid row count after a Collecti

2019-07-11 03:07发布

问题:

Previously to implementing filtering on the CollectionView, i used this to display the number of rows within the datagrid;

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

I have since implemented a filter as so;

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

The TextBlock above still shows the unfiltered count, when visually the filter is removing items from view. How can I get the TextBlock above to show the row count as a result of the filter?

回答1:

The problem is that the filter is applied only on the collection view, and not on the item source.

You can do one of 2 thing:

  1. bind to the collection view count (make sure its INPC).
  2. bind to the items control items.count property.

This way the count will be same as what the user see.