次の方法で共有


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

更新 : 2007 年 11 月

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

使用例

フィルタを作成するには、フィルタ処理ロジックを提供するメソッドを定義します。このメソッドは、コールバックとして使用され、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

その他の技術情報

データ バインディングのサンプル

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