Как использовать несколько фильтров в CollectionView в VB.NET

#wpf #filter #collectionviewsource

#wpf #Фильтр #collectionviewsource

Вопрос:

Я пытаюсь использовать несколько фильтров в CollectionView — используя этот подход:http://bea.stollnitz.com/blog/?p=32

Я разработал синтаксис для добавления фильтров в мой CollectionView

Теперь я хочу знать, как я могу добавить дополнительные параметры к своему методу фильтрации.

например

 Public Shared Sub FilterByAge(ByVal Item As Object, ByVal e As FilterEventArgs, ByVal Age As Int32)
    '
    '
    Dim PersonToFilter As Person = TryCast(e.Item, Person)
    '
    '
    If Not PersonToFilter.Age = Age Then
        '
        e.Accepted = False
        '
    End If
    '
    '
End Sub
  

Можно ли это сделать с помощью Deletegate? Я не очень знаком с ними, хотя:

Может ли кто-нибудь указать мне правильное направление для добавления нескольких фильтров CollectionViewSource в VB.NET с дополнительными параметрами фильтра?

Спасибо, Бен

Ответ №1:

Теперь я хочу знать, как я могу добавить дополнительные параметры к своему методу фильтрации.

Вы не можете этого сделать, подпись обработчика должна соответствовать подписи события. Самое простое решение — сохранить возраст в поле и использовать это поле в вашем обработчике:

 Private _age As Int32

Public Sub FilterByAge(ByVal Item As Object, ByVal e As FilterEventArgs)
    '
    '
    Dim PersonToFilter As Person = TryCast(e.Item, Person)
    '
    '
    If Not PersonToFilter.Age = _age Then
        '
        e.Accepted = False
        '
    End If
    '
    '
End Sub
  

Комментарии:

1. Я думал, что так и будет.