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

Ayrıca bkz.