当前位置:  开发笔记 > 编程语言 > 正文

WPF ListBox - 获取UIElement而不是SelectedItem

如何解决《WPFListBox-获取UIElement而不是SelectedItem》经验,为你挑选了1个好方法。

我创建了一个ListBoxDataTemplateas的Itemtemplate.但是,是否有一种简单的方法来访问生成UIElement而不是代码SelectedItem隐藏?

当我访问时SelectedItem,我只是从我的ItemsSource集合中获取所选对象 .有没有办法访问UIElement(即从DataTemplate绑定对象一起生成的元素)?



1> Szymon Rozga..:

您正在寻找ItemContainerGenerator属性.每个ItemsSource都有一个ItemContainerGenerator实例.此类具有您可能感兴趣的以下方法:ContainerFromItem(对象实例).

一旦有了句柄ListBoxItem,就可以继续浏览逻辑和可视树.查看Logical Tree Helper和Visual Tree Helper.

就像Andy在评论中所说的那样,只是因为你的集合中存在的项目并不意味着已经为它生成了一个容器.任何类型的虚拟化面板场景都会引发这个问题; UIElements将在不同的项目中重复使用.也要小心.


仅供参考,这是我工作的完整代码:`var container = ListBox.ItemContainerGenerator.ContainerFromItem(ListBox.SelectedItem)as FrameworkElement; if(container!= null)container.Focus();`
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有