C1CollectionView を使用すると、コレクションをフィルタ処理して、元のコレクションのうち、指定された述語が true を返す要素のみを含む新しいサブセットを作成できます。C1CollectionView をフィルタ処理しても、基底のデータセットは影響を受けません。Filter プロパティは、項目をビューに入れるかどうかを判断するために使用されるコールバックを取得または設定します。
たとえば、Filter プロパティに述語を設定すると、その述語でフィルタ処理されたリストが作成されます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
' 顧客の監視可能なリストを作成します Dim list = New System.Collections.ObjectModel.ObservableCollection(Of Customer)() ' リストから C1CollectionView を作成します _view = New C1.Xaml.C1CollectionView(list) ' 国(オーストリア)でフィルタ処理します。オーストリア以外の顧客は除外されます。 _view.Filter = Sub(item As Object) Dim c As Customer = TryCast(item, Customer) If c IsNot Nothing Then If c.Country.Equals("Austria") Then Return True End If End If Return False End Sub |
C# コードの書き方
C# |
コードのコピー
|
---|---|
// 顧客の監視可能なリストを作成します var list = new System.Collections.ObjectModel.ObservableCollection<Customer>(); // リストから C1CollectionView を作成します _view = new C1.Xaml.C1CollectionView(list); // 国(オーストリア)でフィルタ処理します。オーストリア以外の顧客は除外されます。 _view.Filter = delegate(object item) { Customer c = item as Customer; if (c != null) { if (c.Country.Equals("Austria")) return true; } return false; }; |
メモ: コレクションが INotifyCollectionChanged を実装している場合は、フィルタ処理の設定後であっても、データに加えられた変更がすべてフィルタ処理に適用されます。