TreeView虚拟化跳转
Posted noctwolf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TreeView虚拟化跳转相关的知识,希望对你有一定的参考价值。
使用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中
以上是关于TreeView虚拟化跳转的主要内容,如果未能解决你的问题,请参考以下文章