HOW TO:篩選檢視中的資料

更新:2007 年 11 月

這個範例顯示如何篩選檢視中的資料。

範例

若要建立篩選條件,請定義可提供篩選邏輯的方法。此方法可做為回呼 (Callback),並接受 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;

如需如何建立或取得檢視的詳細資訊,請參閱 HOW TO:取得資料集合的預設檢視。如需完整的範例,請參閱排序和篩選檢視中項目的範例

若您的檢視物件來自 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;
        }
    }
}

如需完整的範例,請參閱資料繫結示範

請參閱

工作

HOW TO:排序檢視中的資料

概念

資料繫結概觀

參考

CanFilter

CustomFilter

其他資源

資料繫結範例

資料繫結 HOW TO 主題