Добавление фильтра в ICollectionView - PullRequest
0 голосов
/ 10 октября 2018

Как я могу добавить дополнительный параметр в мой предикат для фильтрации моего CollectionView?

Вот как я могу отфильтровать мою коллекцию:

_customerCollection = CollectionViewSource.GetDefaultView(Customers);
_customerCollection.Filter += new Predicate<object>(ShowMale);

private bool ShowMale(object pr)
{
    if (pr == null) return false;
    Customer c = pr as Customer;
    return c.Gender == "male";
}

Это работает.У меня вопрос, как я могу добавить дополнительный параметр в мой предикат?Скажем, я хочу передать строку "мужской".Заранее спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

Свойство Filter не может быть установлено иначе, чем Predicate<object>, то есть метод, который принимает object и возвращает bool, но вы можете получить любые значения, которые вы хотите в методе.

Таким образом, вместо попытки передать что-то методу, вы можете определить string как член того же класса, в котором определен Predicate<object>, и получить его оттуда, например:

public string Gender { get; set; } = "male";

private bool ShowMale(object pr)
{
    if (pr == null) return false;
    Customer c = pr as Customer;
    return c.Gender == this.Gender;
}

В приведенном выше примере вы, конечно, можете связать свойство Gender с элементом управления в представлении, которое динамически устанавливает его значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...