Практическое руководство. Фильтрация данных в представлении
В этом примере показано, как для фильтрации данных в представлении.
Пример
Чтобы создать фильтр, определите метод, который предоставляет логику фильтрации. Метод используется в качестве обратного вызова и принимает параметр типа object
. Следующий метод возвращает все Order
объекты с filled
, имеющим значение «Нет», отфильтровывая остальные объекты.
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;
}
}
}