方法: ビュー内のデータをフィルター処理する
この例では、ビュー内のデータをフィルター処理する方法を示します。
例
フィルターを作成するには、フィルター処理ロジックを提供するメソッドを定義します。 このメソッドはコールバックとして使用され、object
型のパラメーターを受け取ります。 次のメソッドは、filled
プロパティが "No" に設定されているすべての Order
オブジェクトを返し、残りのオブジェクトを除外します。
public bool Contains(object de)
{
Order order = de as Order;
//Return members whose Orders have not been filled
return(order.Filled== "No");
}
Public Function Contains(ByVal de As Object) As Boolean
Dim order1 As Order = TryCast(de, Order)
Return (order1.Filled Is "No")
End Function
次の例に示すように、フィルターを適用できます。 この例では、myCollectionView
は ListCollectionView オブジェクトです。
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
フィルター処理を元に戻すには、Filter プロパティを null
に設定します。
myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing
ビューを作成または取得する方法については、「データ コレクションの既定のビューを取得する」を参照してください。 完全な例については、「ビュー サンプルのアイテムの並べ替えとフィルター処理を
ビュー オブジェクトが CollectionViewSource オブジェクトから取得されている場合は、Filter イベントのイベント ハンドラーを設定してフィルター処理ロジックを適用します。 次の例では、listingDataView
は CollectionViewSourceのインスタンスです。
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf 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;
}
}
}
Private Sub ShowOnlyBargainsFilter(ByVal sender As Object, ByVal e As FilterEventArgs)
Dim product As AuctionItem = CType(e.Item, AuctionItem)
If Not (product Is Nothing) Then
'Filter out products with price 25 or above
If product.CurrentPrice < 25 Then
e.Accepted = True
Else
e.Accepted = False
End If
End If
End Sub
関連項目
.NET Desktop feedback