Share via


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 objectbir 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 myCollectionViewListCollectionView 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 nullayarlayabilirsinizFilter:

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.