Condividi tramite


Procedura: filtrare i dati in una visualizzazione

Aggiornamento: novembre 2007

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.

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

Per l'esempio completo, vedere Demo Data Binding.

Vedere anche

Attività

Procedura: ordinare i dati in una visualizzazione

Concetti

Cenni preliminari sull'associazione dati

Riferimenti

CanFilter

CustomFilter

Altre risorse

Esempi di associazione dati

Procedure relative all'associazione dati