gpt4 book ai didi

c# - 独立 WPF 过滤器控件

转载 作者:太空宇宙 更新时间:2023-11-03 20:46:17 25 4
gpt4 key购买 nike

大多数 WPF 数据网格控件都具有过滤显示数据的内置功能。我有兴趣使用该功能,但与数据网格的使用无关。

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

最佳答案

在 WPF 中,内置控件的过滤是使用 CollectionView 执行的。 .这CollectionView然后被分配为 ItemsSource集合控件(从 ItemsControl 派生的任何内容)。

自 .NET 3.5 SP1 起,CollectionView 上的过滤器属性类采用 Predicate<object> 类型的委托(delegate). Predicate<object>似乎与 Func<object, bool> 基本相同,但两者并不直接兼容。您应该能够轻松创建 Func<object, bool>委托(delegate)包装 Predicate<object>代表。

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

您可以在 CollectionView 中的过滤器上调用它,然后在 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));

关于c# - 独立 WPF 过滤器控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com