Basic Library for UWP
コントロールのフィルタ処理
Basic Library for UWP > CollectionView for UWP > C1CollectionView の使い方 > コントロールのフィルタ処理

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 を実装している場合は、フィルタ処理の設定後であっても、データに加えられた変更がすべてフィルタ処理に適用されます。

関連トピック