TreeView虚拟化跳转
程序员文章站
2023-11-04 11:30:28
使用ItemContainerGenerator.ContainerFromItem方法可以获取对应数据的UIElement 。 但是如果使用了虚拟化技术,超出可见区域的UIElement就获取不到了。 参考微软的文档《如何:在 TreeView 中查找 TreeViewItem》,去掉一些不必要的 ......
使用itemcontainergenerator.containerfromitem方法可以获取对应数据的uielement 。
但是如果使用了虚拟化技术,超出可见区域的uielement就获取不到了。
参考微软的文档《如何:在 treeview 中查找 treeviewitem》,去掉一些不必要的和过时的代码,写了一个完整的例子。
主要代码只有5行
1 itemscontrol.applytemplate(); 2 var itemspresenter = findvisualchild<itemspresenter>(itemscontrol); 3 itemspresenter.applytemplate(); 4 var virtualizingstackpanel = (virtualizingstackpanel)visualtreehelper.getchild(itemspresenter, 0); 5 virtualizingstackpanel.bringindexintoviewpublic(data.index);
通过这样的处理,就可以取到uielement啦。
itemscontrol = (itemscontrol)itemscontrol.itemcontainergenerator.containerfromitem(vm);
demo运行效果图
完整示例在我的github中