다음을 통해 공유


방법: 뷰에서 데이터 필터링

이 예제에서는 뷰에서 데이터를 필터링하는 방법을 보여 줍니다.

예제

필터를 만들려면 필터링 논리를 제공하는 메서드를 정의합니다. 메서드는 콜백으로 사용되고 object 형식의 매개 변수를 사용합니다. 다음 메서드는 filled 속성이 "No"로 설정된 모든 Order 개체를 반환하고 나머지 개체는 필터링합니다.

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;

뷰를 만들거나 가져오는 방법에 대한 자세한 내용은 방법: 데이터 수집의 기본 뷰 가져오기를 참조하십시오. 전체 예제를 보려면 Sorting and Filtering Items in a View 샘플을 참조하십시오.

뷰 개체가 CollectionViewSource 개체에서 오는 경우 Filter 이벤트에 대해 이벤트 처리기를 설정하여 필터링 논리를 적용합니다. 다음 예제에서 listingDataView는 CollectionViewSource의 인스턴스입니다.

listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);

다음 예제에서는 ShowOnlyBargainsFilter 필터 이벤트 처리기 예제의 구현을 보여 줍니다. 이 이벤트 처리기는 Accepted 속성을 사용하여 CurrentPrice가 $25 이상인 AuctionItem 개체를 필터링합니다.

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

개념

데이터 바인딩 개요

기타 리소스

데이터 바인딩 방법 항목