Condividi tramite


Procedura: filtrare i dati in una visualizzazione

In questo esempio viene illustrata la procedura per filtrare i dati in una visualizzazione.

Esempio

Per creare un filtro, definire un metodo che fornisca la logica di filtro. Il metodo viene utilizzato come callback e accetta un parametro di tipo object. Il metodo riportato di seguito restituisce tutti gli oggetti Order con la proprietà filled impostata su "No", filtrando i restanti oggetti.

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

È possibile quindi applicare il filtro, come illustrato nell'esempio seguente. In questo esempio, myCollectionView è un oggetto ListCollectionView.

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

Per rimuovere il filtro, è possibile impostare la proprietà Filter su null:

myCollectionView.Filter = null;

Per informazioni su come creare o ottenere una visualizzazione, vedere Procedura: ottenere la visualizzazione predefinita di una raccolta dati. Per l'esempio completo, vedere Esempio di ordinamento e filtro di elementi in una visualizzazione (la pagina potrebbe essere in inglese).

Se l'oggetto visualizzazione proviene da un oggettoCollectionViewSource, applicare la logica di filtro impostando un gestore eventi per l'evento Filter. Nell'esempio riportato di seguito, listingDataView è un'istanza di CollectionViewSource.

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

Nell'esempio seguente viene illustrata l'implementazione del gestore eventi del filtro ShowOnlyBargainsFilter di esempio. Questo gestore eventi utilizza la proprietà Accepted per filtrare gli oggetti AuctionItem con CurrentPrice pari a 25 dollari o superiore.

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

Vedere anche

Attività

Procedura: ordinare i dati in una visualizzazione

Riferimenti

CanFilter

CustomFilter

Concetti

Cenni preliminari sull'associazione dati

Altre risorse

Procedure relative all'associazione dati