Comment : filtrer les données d'une vue

Cet exemple montre comment filtrer des données dans une vue.

Exemple

Pour créer un filtre, définissez une méthode qui fournit la logique de filtrage. La méthode est utilisée comme rappel et accepte un paramètre de type object. La méthode suivante retourne tous les Order objets dont la filled propriété est définie sur « Non », en filtrant le reste des objets.

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

Vous pouvez ensuite appliquer le filtre, comme illustré dans l’exemple suivant. Dans cet exemple, myCollectionView est un ListCollectionView objet.

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

Pour annuler le filtrage, vous pouvez définir la Filter propriété sur null:

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

Pour plus d’informations sur la création ou l’obtention d’une vue, consultez Obtenir la vue par défaut d’une collection de données. Pour obtenir l’exemple complet, consultez Tri et filtrage d’éléments dans un exemple d’affichage.

Si votre objet d’affichage provient d’un objet, vous appliquez une CollectionViewSource logique de filtrage en définissant un gestionnaire d’événements pour l’événement Filter . Dans l’exemple suivant, listingDataView est une instance de CollectionViewSource.

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

L’exemple suivant montre l’implémentation de l’exemple ShowOnlyBargainsFilter de gestionnaire d’événements de filtre. Ce gestionnaire d’événements utilise la Accepted propriété pour filtrer les AuctionItem objets dont la CurrentPrice valeur est de 25 $ ou supérieure.

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

Voir aussi