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

独立WPF筛选器控件

  •  1
  • NoizWaves  · 技术社区  · 15 年前

    大多数WPF数据网格控件都有一个内置的过滤显示数据的能力。我对使用该功能很感兴趣,但与数据网格的使用断开了联系。

    我希望找到一个用户控件,它将返回一个 Expression<Func<T, bool>> 我可以在LINQ查询中使用。有人知道这样的用户控件吗?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Josh G    15 年前

    在WPF中,使用 CollectionView 集合视图 然后指定为 ItemsSource 集合控件(任何派生自 ItemsControl

    从.NET3.5SP1开始 类接受类型为的委托 Predicate<object> . Func<object, bool> ,但两者并不直接兼容。您应该能够轻松地创建 谓词<object> 代表。

    public static Func<object, bool> GetFuncFromPred(Predicate<object> pred)
    {
        return (obj => pred.Invoke(obj));
    }
    

    集合视图 ,然后在LINQ查询中使用它们。

    List<object> list = GetList();
    CollectionView colView = new CollectionView(list);
    ListBox lb = GetListBox();
    lb.ItemsSource = colView;
    colView.Filter = GetFilter();
    var filteredItems = list.Where(GetFuncFromPred(colView.Filter));
    
        2
  •  0
  •   Muad'Dib    15 年前

    我什么都不知道。我们必须建立自己的。

    我们使用了一个CollectionViewSource并添加了一个默认过滤器,以及用自定义过滤器替换默认过滤器的能力。

        3
  •  0
  •   Bruno    13 年前

    http://dotnetexplorer.blog.com/2011/04/07/wpf-itemscontrol-generic-staticreal-time-filter-custom-control-presentation/

    这是一个通用的、动态的、完整的XAML声明性itemscontrol筛选器用户控件。它可以过滤datagrid、listbox、combobox等。。。

    该组件使用预编译的链接表达式来检索和比较对象值,因此它提供了相当好的性能。