Dela via


Anvisningar: Filtrera data i en vy

Det här exemplet visar hur du filtrerar data i en vy.

Exempel

Om du vill skapa ett filter definierar du en metod som tillhandahåller filtreringslogik. Metoden används som motringning och accepterar en parameter av typen object. Följande metod returnerar alla Order objekt med egenskapen filled inställd på "Nej" och filtrerar bort resten av objekten.

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

Du kan sedan använda filtret, som du ser i följande exempel. I det här exemplet är myCollectionView ett ListCollectionView objekt.

myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)

Om du vill ångra filtreringen kan du ange egenskapen Filter till null:

myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing

Information om hur du skapar eller hämtar en vy finns i Hämta standardvyn för en datainsamling. Det fullständiga exemplet finns i Sorterings- och filtreringsobjekt i ett visningsexempel.

Om visningsobjektet kommer från ett CollectionViewSource objekt använder du filtreringslogik genom att ange en händelsehanterare för Filter händelsen. I följande exempel är listingDataView en instans av CollectionViewSource.

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

Följande visar implementeringen av exemplet ShowOnlyBargainsFilter filterhändelsehanterare. Den här händelsehanteraren använder egenskapen Accepted för att filtrera bort AuctionItem objekt som har en CurrentPrice på 25 USD eller högre.

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

Se även