方法 : ビュー内のデータをフィルター処理する
この例では、ビュー内のデータをフィルター処理する方法を示します。
使用例
フィルターを作成するには、フィルター処理ロジックを提供するメソッドを定義します。 このメソッドは、コールバックとして使用され、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;
}
}
}