Nasıl yapılır: Görünümde Veri Filtreleme
Bu örnekte, bir görünümdeki verilerin nasıl filtreleneceği gösterilmektedir.
Ö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 object
bir parametre kabul eder. Aşağıdaki yöntem, özelliği "Hayır" olarak ayarlanmış olan tüm Order
nesneleri filled
döndürür ve nesnelerin geri kalanını filtreler.
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 bir myCollectionView
ListCollectionView nesnedir.
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
Filtrelemeyi geri almak için özelliğini olarak null
ayarlayabilirsinizFilter:
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. Örneğin tamamı için bkz . Görünüm Örneğindeki Öğeleri Sıralama ve Filtreleme.
Görünüm nesneniz bir CollectionViewSource nesneden geliyorsa, olay için Filter bir olay işleyicisi ayarlayarak filtreleme mantığı uygularsınız. Aşağıdaki örnekte bir listingDataView
örneği verilmiştir CollectionViewSource.
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter
Aşağıda örnek ShowOnlyBargainsFilter
filtre olay işleyicisinin uygulanması gösterilmektedir. Bu olay işleyicisi, 25 ABD doları veya daha büyük bir CurrentPrice
değere sahip nesneleri filtrelemek AuctionItem
için özelliğini kullanırAccepted.
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
Ayrıca bkz.
.NET Desktop feedback