首页 > 解决方案 > 如何使用具有多个条件的 CollectionView 在网格中使用搜索?

问题描述

我有文本框和组合框以及一个 GridView,我想用所有控件(组合框和文本框)过滤网格的某些列,我有此代码将使用一个条件(文本框)过滤的视图返回到自定义列。

备注: 我没有使用 MVVM 模式。

    GridView.ItemsSource = MyList.ToList();
    ListCollectionView view = (ListCollectionView)CollectionViewSource.GetDefaultView(MyList);

    view.Filter = delegate (object item) { return (item as User).Name.Contains(Name_txt.Text); };
    GridView.ItemsSource = view;


    public class User 
     {
       public Id { get; set; }
       public Name { get; set; }
     } 

如何过滤具有多个条件(输入)的数据网格列?

标签: c#wpfcollectionview

解决方案


您应该将所有条件添加到Filter谓词中,例如:

view.Filter = delegate (object item)
{ 
    User user = item as User;
    if (user == null)
        return false;

    return user.Name.Contains(Name_txt.Text)
        && comboBox1.SelectedItem == ?
        && ...; 
};

推荐阅读