Поделиться через


Практическое руководство. Фильтрация данных в представлении

В этом примере демонстрируется фильтрация данных в представлении.

Пример

Для создания фильтра требуется определить метод, обеспечивающий логику фильтрации. Метод используется в качестве обратного вызова и принимает аргумент типа object. Следующий метод возвращает все объекты Order со свойством filled, установленным в «Нет», отфильтровывая остальные объекты.

Public Function Contains(ByVal de As Object) As Boolean
    Dim order1 As Order = TryCast(de, Order)
    Return (order1.Filled Is "No")
End Function
public bool Contains(object de)
{
    Order order = de as Order;
    //Return members whose Orders have not been filled
    return(order.Filled== "No");
}

Затем можно применить фильтр, как показано в следующем примере. В этом примере myCollectionView является объектом ListCollectionView.

myCollectionView.Filter = new Predicate<object>(Contains);

Чтобы отменить фильтрацию, следует установить свойство Filter в значение null:

myCollectionView.Filter = null;

Сведения о создании или получении представления см. в разделе Практическое руководство. Получение представления по умолчанию для коллекции данных. Полный пример см. на веб-странице Пример сортировки и фильтрации элементов в представлении.

Если объект представления генерируется из объекта CollectionViewSource, примените логику фильтрации, установив обработчик событий для события Filter. В следующем примере listingDataView представляет собой экземпляр CollectionViewSource.

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

Ниже приведена реализация примера обработчика событий фильтра ShowOnlyBargainsFilter. Этот обработчик событий использует свойство Accepted, чтобы отфильтровать объекты AuctionItem, у которых значение свойства CurrentPrice больше или равно $25.

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;
        }
    }
}

См. также

Задачи

Практическое руководство. Сортировка данных в представлении

Ссылки

CanFilter

CustomFilter

Основные понятия

Общие сведения о связывании данных

Другие ресурсы

Практические руководства по привязке данных