我有一个 'BindingListView View' 绑定到一个 'DataGridView' 的Equin.ApplicationFramework
. 根据文档过滤是这样完成的:
View.ApplyFilter(
delegate (SomeViewModel item)
{
return item.Code == textBox1.Text;
}
);
我需要一个过滤器方法,它可以过滤任何item.Code == 'SomeText'
类型的项目,BindingListView
有什么方法可以实现吗?我想出了
View.ApplyFilter(
delegate (object item)
{
return item.GetType().GetProperty("Code").GetValue(item).ToString() == textBox1.Text;
}
);
不幸的是它不起作用。我收到编译器错误:
无法将匿名方法转换为类型“委托”,因为它不是委托类型
我也在这里尝试了解决方案没有成功。
看起来该方法需要一个Predicate<T>
. 您是否尝试过使用谓词语法?
View.ApplyFilter(i => (string)i.GetType().GetProperty("Code").GetValue(i) == "SomeText")
或者,让所有类实现一个公共接口并使用它来访问Code
. 如果无法使用反射,您至少应该缓存PropertyInfo
用于查询类型信息的每个不同类型的速度非常慢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句