使用ItemContainerGenerator.ContainerFromItem方法可以获取对应数据的UIElement 。

但是如果使用了虚拟化技术,超出可见区域的UIElement就获取不到了。

参考微软的文档《如何:在 TreeView 中查找 TreeViewItem》,去掉一些不必要的和过时的代码,写了一个完整的例子。

主要代码只有5行

                 itemsControl.ApplyTemplate();
var itemsPresenter = FindVisualChild<ItemsPresenter>(itemsControl);
itemsPresenter.ApplyTemplate();
var virtualizingStackPanel = (VirtualizingStackPanel)VisualTreeHelper.GetChild(itemsPresenter, );
virtualizingStackPanel.BringIndexIntoViewPublic(data.index);

通过这样的处理,就可以取到UIElement啦。

                itemsControl = (ItemsControl)itemsControl.ItemContainerGenerator.ContainerFromItem(vm);

Demo运行效果图

完整示例在我的Github

最新文章

  1. EF Code First 导航属性 与外键
  2. sphinx 全配置
  3. C++primer 练习12.27
  4. MDI/MDIX接口
  5. C#文件操作系列(一)
  6. css3 渐变记
  7. BZOJ_1623:_[Usaco2008_Open]_Cow_Cars_奶牛飞车_(贪心)
  8. java与c/c++进行socket通信
  9. 怎么样excel其产生的条形码(10分钟的时间excel)从而出现了条形码
  10. [Q]如何将图纸打印为黑白的及设置打印样式
  11. C++学习-3
  12. ISCC 2018 (Please give me username and password)
  13. [Swift]LeetCode275. H指数 II | H-Index II
  14. 其实我们可以少写点if else和switch
  15. quick-cocos2d-x 游戏开发之一】开发工具sublime text及其强力插件QuickXDev
  16. go 函数的作用域及可见性
  17. 【react 分页器】 基于react-virtualized组件的分页器
  18. Perl 引用:引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序。
  19. oracle记录错误存储过程
  20. debug---null Pointer Exception--一步步查找(2)

热门文章

  1. centos6.5安装apache2.x并更改默认80port
  2. Apache Commons Pool 故事一则 专题
  3. .net reactor 学习系列(二)---.net reactor界面各功能说明
  4. WPF图片放大后模糊的解决方法
  5. 解决引用 System.Windows.Interactivity程序集生成多国语言文件夹fr、es、ja等问题
  6. 微软Insider Dev Tour 活动
  7. Angular语法(一)——展示数据
  8. XF 列表视图分组列表填充
  9. WPF 使用Propereties:Resources.resx里面的资源
  10. HALCON学习之算子大全