Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo esempio viene illustrato come filtrare i dati in una visualizzazione.
Esempio
Per creare un filtro, definire un metodo che fornisce la logica di filtro. Il metodo viene usato come callback e accetta un parametro di tipo object. Il metodo seguente restituisce tutti gli oggetti Order con la proprietà filled impostata su "No", filtrando il resto degli oggetti.
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
È quindi possibile applicare il filtro, come illustrato nell'esempio seguente. In questo esempio myCollectionView è un oggetto ListCollectionView.
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
Per annullare il filtro, è possibile impostare la proprietà Filter su null:
myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing
Per informazioni su come creare o ottenere una vista, vedere Ottenere la visualizzazione predefinita di una raccolta di dati. Per l'esempio completo, vedere Ordinamento e filtro degli elementi in un esempio di visualizzazione.
Se l'oggetto view proviene da un oggetto CollectionViewSource, applica la logica di filtro impostando un gestore eventi per l'evento Filter. Nell'esempio seguente listingDataView è un'istanza di CollectionViewSource.
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter
Di seguito viene mostrata l'implementazione del gestore eventi di filtro dell'esempio ShowOnlyBargainsFilter. Questo gestore eventi usa la proprietà Accepted per escludere AuctionItem oggetti con un CurrentPrice di $25 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;
}
}
}
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
Vedere anche
.NET Desktop feedback