我创建了一个ListBox
有DataTemplate
as的Itemtemplate
.但是,是否有一种简单的方法来访问生成UIElement
而不是代码SelectedItem
隐藏?
当我访问时SelectedItem
,我只是从我的ItemsSource
集合中获取所选对象
.有没有办法访问UIElement
(即从DataTemplate
绑定对象一起生成的元素)?
您正在寻找ItemContainerGenerator属性.每个ItemsSource
都有一个ItemContainerGenerator实例.此类具有您可能感兴趣的以下方法:ContainerFromItem(对象实例).
一旦有了句柄ListBoxItem
,就可以继续浏览逻辑和可视树.查看Logical Tree Helper和Visual Tree Helper.
就像Andy在评论中所说的那样,只是因为你的集合中存在的项目并不意味着已经为它生成了一个容器.任何类型的虚拟化面板场景都会引发这个问题; UIElements将在不同的项目中重复使用.也要小心.