如何:篩選檢視中的資料
此範例示範如何在檢視中篩選資料。
範例
若要建立篩選,請定義提供篩選邏輯的方法。 方法會當做回呼使用,並接受 類型的 object
參數。 下列方法會傳回屬性設定為 「No」 的所有 Order
物件 filled
,並篩選掉其餘的物件。
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
然後,您可以套用篩選,如下列範例所示。 在此範例中, myCollectionView
是 ListCollectionView 物件。
myCollectionView.Filter = new Predicate<object>(Contains);
Me.myCollectionView.Filter = New Predicate(Of Object)(AddressOf Me.Contains)
若要復原篩選,您可以將 屬性設定 Filter 為 null
:
myCollectionView.Filter = null;
Me.myCollectionView.Filter = Nothing
如需如何建立或取得檢視的資訊,請參閱 取得資料收集 的預設檢視。 如需完整的範例,請參閱 檢視範例 中的排序和篩選項目。
如果您的檢視物件來自 CollectionViewSource 物件,您可以藉由設定事件的事件處理常式 Filter 來套用篩選邏輯。 在下列範例中, listingDataView
是 的 CollectionViewSource 實例。
listingDataView.Filter += new FilterEventHandler(ShowOnlyBargainsFilter);
AddHandler listingDataView.Filter, AddressOf 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;
}
}
}
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
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應