Практическое руководство. Фильтрация данных в представленииHow to: Filter Data in a View

В этом примере показано, как для фильтрации данных в представлении.This example shows how to filter data in a view.

ПримерExample

Чтобы создать фильтр, определите метод, который предоставляет логику фильтрации.To create a filter, define a method that provides the filtering logic. Метод используется в качестве обратного вызова и принимает параметр типа object.The method is used as a callback and accepts a parameter of type object. Следующий метод возвращает все Order объекты с filled , имеющим значение «Нет», отфильтровывая остальные объекты.The following method returns all the Order objects with the filled property set to "No", filtering out the rest of the objects.

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

Затем можно применить фильтр, как показано в следующем примере.You can then apply the filter, as shown in the following example. В этом примере myCollectionView является ListCollectionView объекта.In this example, myCollectionView is a ListCollectionView object.

myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)

Чтобы отменить фильтрацию, можно задать Filter свойства null:To undo filtering, you can set the Filter property to null:

myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing

Сведения о том, как для создания или получения представления, см. в разделе получение представления по умолчанию для коллекции данных.For information about how to create or obtain a view, see Get the Default View of a Data Collection. Полный пример см. в разделе Сортировка и фильтрация элементов в представлении-пример.For the complete example, see Sorting and Filtering Items in a View Sample.

Если объект представления генерируется из CollectionViewSource объекта, применять логику фильтрации, установив обработчик событий для Filter событий.If your view object comes from a CollectionViewSource object, you apply filtering logic by setting an event handler for the Filter event. В следующем примере listingDataView является экземпляром класса CollectionViewSource.In the following example, listingDataView is an instance of CollectionViewSource.

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf ShowOnlyBargainsFilter

Ниже приведена реализация примера ShowOnlyBargainsFilter обработчик событий фильтра.The following shows the implementation of the example ShowOnlyBargainsFilter filter event handler. Этот обработчик событий использует Accepted свойство, чтобы отфильтровать AuctionItem объектов, имеющих CurrentPrice $ 25 или более поздней версии.This event handler uses the Accepted property to filter out AuctionItem objects that have a CurrentPrice of $25 or greater.

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

См. такжеSee also