码迷,mamicode.com
首页 > 其他好文 > 详细

TreeView虚拟化跳转

时间:2019-07-02 21:28:35      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:虚拟化   效果   src   ref   rtu   get   target   exint   效果图   

使用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虚拟化跳转

标签:虚拟化   效果   src   ref   rtu   get   target   exint   效果图   

原文地址:https://www.cnblogs.com/noctwolf/p/11123038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!