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

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

次の 2 つのいずれかを行うことができます。

  1. コレクション ビュー カウントにバインドします (その INPC を確認してください)。
  2. アイテム コントロールの items.count プロパティにバインドします。

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

于 2011-01-05T22:58:35.050 に答える