我尝试使用文档中的委托来过滤TreeListView
:Filtering ObjectListView
所以它是这样的:
this.myTree.ModelFilter = new ModelFilter(delegate(object x) {
return (((MyTreeNode)x).Type == type); // this code doesn't work, why ?
});
结果,myTree
应该包括.Type
属性等于type
的所有节点,在我的情况下树中没有节点,为什么???。
但是,如果我将.Type
属性设置为根节点的类型,那么它将只是树中的一个根节点,因此在这种情况下它可以工作。
ETA:为什么使用上面的代码进行过滤不起作用?
答案 0 :(得分:2)
从您的问题来看,您的TreeListView
结构看起来并不完全清楚。但它可能与您想要过滤尚未获取的子项目(未展开节点)这一事实有关吗?
从您已经引用的教程链接:
过滤和TreeListViews
过滤和TreeListViews以可预测但可能意想不到的方式进行交互 过滤仅考虑当前公开的行(即,它们的所有祖先都被扩展) 在这些行中,如果过滤包含行或者任何后代,则过滤过程将包括行。 (是的,这是递归的)。如果底层子项符合过滤条件,则其所有祖先也将被视为已匹配,因此将显示在控件中。
在大多数情况下,这提供了最可预测和最有用的视觉效果。