2011-01-05 3 views
2

以前はCollectionViewでフィルタリングを実装するために、これを使ってデータグリッド内の行数を表示しました。CollectionViewフィルターを適用した後、DataGridの行数をバインドする方法はありますか?

<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をどのように取得できますか?

答えて

3

問題は、フィルタがアイテムビューではなくコレクションビューにのみ適用されることです。

あなたは2事の1行うことができます。コレクションビューのカウントに

  1. バインドを(そのINPCことを確認してください)。
  2. コントロールitems.countプロパティにバインドします。

このようにして、カウントはユーザーの表示と同じになります。

+2

ありがとうございます、ItemsSource.CountをItems.Countに切り替えました –

関連する問題