方法 : ビュー内のデータをフィルター処理する

この例では、ビュー内のデータをフィルター処理する方法を示します。

使用例

フィルターを作成するには、フィルター処理ロジックを提供するメソッドを定義します。 このメソッドは、コールバックとして使用され、object 型のパラメーターを受け取ります。 次のメソッドは、残りのオブジェクトをフィルターで除外し、filled プロパティが "No" に設定されたすべての Order オブジェクトを返します。

Public Function Contains(ByVal de As Object) As Boolean
    Dim order1 As Order = TryCast(de, Order)
    Return (order1.Filled Is "No")
End Function
public bool Contains(object de)
{
    Order order = de as Order;
    //Return members whose Orders have not been filled
    return(order.Filled== "No");
}

次の例に示すように、フィルターを適用できます。 この例では、myCollectionView は、ListCollectionView オブジェクトです。

myCollectionView.Filter = new Predicate<object>(Contains);

フィルターを解除するには、Filter プロパティを null に設定できます。

myCollectionView.Filter = null;

ビューを作成または取得する方法については、「方法 : データ コレクションの既定のビューを取得する」を参照してください。 サンプル全体については、ビューでの項目の並べ替えおよびフィルター処理のサンプルを参照してください。

ビュー オブジェクトが CollectionViewSource オブジェクトから生成された場合は、Filter イベントのイベント ハンドラーを設定することによりフィルター処理ロジックを適用します。 次の例では、listingDataView は CollectionViewSource のインスタンスです。

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

ShowOnlyBargainsFilter フィルター イベント ハンドラーの実装例を次に示します。 このイベント ハンドラーは、Accepted プロパティを使用して、CurrentPrice が 25 ドル以上の AuctionItem オブジェクトをフィルターで除外します。

private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e)
{
    AuctionItem product = e.Item as AuctionItem;
    if (product != null)
    {
        // Filter out products with price 25 or above
        if (product.CurrentPrice < 25)
        {
            e.Accepted = true;
        }
        else
        {
            e.Accepted = false;
        }
    }
}

参照

処理手順

方法: ビュー内のデータを並べ替える

参照

CanFilter

CustomFilter

概念

データ バインディングの概要

その他の技術情報

データ バインディングに関する「方法」トピック