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
Concetti
Cenni preliminari sull'associazione dati