代码之家  ›  专栏  ›  技术社区  ›  jomsk1e

向ICollectionView添加筛选器

  •  1
  • jomsk1e  · 技术社区  · 7 年前

    如何向谓词中添加额外的参数来过滤CollectionView?

    下面是我如何筛选我的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 回复  |  直到 7 年前
        1
  •  2
  •   mm8    7 年前

    这个 Filter 属性不能设置为 Predicate<object> ,即接受 object 返回一个 bool ,但您可以在方法中检索所需的任何值。

    string 作为同一阶级的成员 谓词<对象> 定义并从中检索,例如:

    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 属性设置为视图中动态设置其值的控件。