How can I bind DataGrid row count after a Collecti

2019-07-11 02:42发布

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条回答
\"骚年 ilove
2楼-- · 2019-07-11 03:04

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.

查看更多
登录 后发表回答