Instrukcje: filtrowanie danych w widoku
W tym przykładzie pokazano, jak filtrować dane w widoku.
Przykład
Aby utworzyć filtr, zdefiniuj metodę, która zapewnia logikę filtrowania. Metoda jest używana jako wywołanie zwrotne i akceptuje parametr typu object
. Poniższa metoda zwraca wszystkie obiekty Order
z właściwością filled
ustawioną na "Nie", filtrując pozostałe obiekty.
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
Następnie możesz zastosować filtr, jak pokazano w poniższym przykładzie. W tym przykładzie myCollectionView
jest obiektem ListCollectionView.
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
Aby cofnąć filtrowanie, możesz ustawić właściwość Filter na null
:
myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing
Aby uzyskać informacje o sposobie tworzenia lub uzyskiwania widoku, zobacz Uzyskiwanie domyślnego widoku kolekcji danych. Aby zapoznać się z kompletnym przykładem, zobacz Sortowanie i filtrowanie elementów w przykładzie widoku.
Jeśli obiekt widoku pochodzi z obiektu CollectionViewSource, zastosuj logikę filtrowania, ustawiając procedurę obsługi zdarzeń dla zdarzenia Filter. W poniższym przykładzie listingDataView
jest wystąpieniem CollectionViewSource.
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter
Poniżej przedstawiono implementację przykładowej procedury obsługi zdarzenia filtru ShowOnlyBargainsFilter
. Ta procedura obsługi zdarzeń używa właściwości Accepted do filtrowania obiektów AuctionItem
, które mają CurrentPrice
o wartości co najmniej 25 USD.
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
Zobacz też
- CanFilter
- CustomFilter
- omówienie powiązania danych
- Sortuj dane w widoku
- tematy instruktażowe
.NET Desktop feedback