如何为谓词添加一个额外的参数以过滤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”。先感谢您。
答案 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
属性绑定到视图中的控件,该控件可以动态设置其值。