Gewusst wie: Filtern von Daten in einer Ansicht

Aktualisiert: November 2007

Dieses Beispiel zeigt, wie Daten in einer Ansicht gefiltert werden.

Beispiel

Um einen Filter zu erstellen, definieren Sie eine Methode, die die Filterlogik bereitstellt. Die Methode wird als Rückruf verwendet und akzeptiert einen Parameter vom Typ object. Die folgende Methode gibt alle Order-Objekte zurück, deren filled-Eigenschaft auf "No" festgelegt ist. Der Rest der Objekte wird herausgefiltert.

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");
}

Sie können dann den Filter anwenden, wie im folgenden Beispiel gezeigt. In diesem Beispiel ist myCollectionView ein ListCollectionView-Objekt.

myCollectionView.Filter = new Predicate<object>(Contains);

Um die Filterung rückgängig zu machen, können Sie die Filter-Eigenschaft auf null festlegen:

myCollectionView.Filter = null;

Informationen über das Erstellen oder Abrufen einer Ansicht finden Sie unter Gewusst wie: Abrufen der Standardansicht einer Datenauflistung. Das vollständige Beispiel finden Sie unter Beispiel zum Sortieren und Filtern von Elementen in einer Ansicht.

Wenn das Ansichtsobjekt aus einem CollectionViewSource-Objekt stammt, wenden Sie Filterlogik an, indem Sie einen Ereignishandler für das Filter-Ereignis festlegen. Im folgenden Beispiel ist listingDataView eine Instanz von CollectionViewSource.

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

Im Folgenden wird die Implementierung des Beispiels für den ShowOnlyBargainsFilter-Filterereignishandler veranschaulicht. Dieser Ereignishandler filtert anhand der Accepted-Eigenschaft die AuctionItem-Objekte heraus, deren CurrentPrice 25 $ oder mehr beträgt.

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;
        }
    }
}

Das vollständige Beispiel finden Sie unter Demo für die Datenbindung.

Siehe auch

Aufgaben

Gewusst wie: Sortieren von Daten in einer Ansicht

Konzepte

Übersicht über Datenbindung

Referenz

CanFilter

CustomFilter

Weitere Ressourcen

Beispiel zur Datenbindung

Gewusst-wie-Themen zur Datenbindung