共用方式為


如何:篩選檢視中的資料

此範例示範如何在檢視中篩選資料。

範例

若要建立篩選,請定義提供篩選邏輯的方法。 此方法會用作回呼,並接受類型為 object 的參數。 下列方法會傳回所有 Order 物件,將 filled 屬性設定為 “No”,並篩選掉其餘的物件。

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

然後,您可以套用篩選,如下列範例所示。 在此範例中,myCollectionViewListCollectionView 物件。

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 事件的事件處理常式來套用篩選邏輯。 在下列範例中,listingDataViewCollectionViewSource 的一個執行個體。

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter

以下顯示範例 ShowOnlyBargainsFilter 篩選事件處理常式的實作。 這個事件處理常式會使用 Accepted 屬性來篩選出具有 $25 或更高 CurrentPriceAuctionItem 物件。

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

另請參閱