将过滤器添加到ICollectionView

时间:2018-10-10 14:32:37

标签: c# wpf

如何为谓词添加一个额外的参数以过滤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";
}

这有效。我的问题是如何为谓词添加额外的参数?说,我想传递字符串“ male”。先感谢您。

1 个答案:

答案 0 :(得分:2)

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属性绑定到视图中的控件,该控件可以动态设置其值。

相关问题