Gewusst wie: Filtern von Daten in einer Ansicht
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;
}
}
}
Siehe auch
Aufgaben
Gewusst wie: Sortieren von Daten in einer Ansicht