Nasıl yapılır: Görünümde Veri Filtreleme
Bu örnekte, bir görünümde verilerin nasıl filtrelenmiş olduğu gösterir.
Örnek
Filtre oluşturmak için filtreleme mantığını sağlayan bir yöntem tanımlayın. yöntemi geri çağırma olarak kullanılır ve türünde bir parametre kabul object eder. Aşağıdaki yöntem, özelliği "Hayır" olarak ayarlanmış tüm nesneleri döndürerek nesnelerin Orderfilled geri kalanını filtrelemektedir.
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
Ardından, aşağıdaki örnekte gösterildiği gibi filtreyi uygulayabilirsiniz. Bu örnekte, myCollectionView bir ListCollectionView nesnesidir.
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
Filtrelemeyi geri almak için özelliğini olarak Filternull ayarlayın:
myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing
Görünüm oluşturma veya alma hakkında bilgi için bkz. Veri Koleksiyonunun Varsayılan Görünümünü Alma. Tam örnek için bkz. Görünüm Örneğindeki Öğeleri Sıralama ve Filtreleme.
Görünüm nesneniz bir nesneden CollectionViewSource geliyorsa, olay için bir olay işleyici ayarerek filtreleme mantığı Filter uygulayabilirsiniz. Aşağıdaki örnekte, listingDataView bir CollectionViewSource örneğidir.
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter
Aşağıda, örnek filtre olay ShowOnlyBargainsFilter işleyicisi uygulaması gösterir. Bu olay işleyicisi, $25 veya daha büyük bir değerine sahip AcceptedAuctionItem nesneleri CurrentPrice filtrelemek için özelliğini kullanır.
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