树视图中任何项目的 OnExpanded 事件
Posted
技术标签:
【中文标题】树视图中任何项目的 OnExpanded 事件【英文标题】:OnExpanded event for any item in a treeview 【发布时间】:2010-11-26 03:45:11 【问题描述】:我想为我的树视图中的树视图项的任何扩展获取事件。
这个原因,和原来的问题有点无关: 我正在创建一个与 xml 文件树密切相关的树,但我允许在 xml 中包含一个包含元素,因此树可以跨越多个文件。我想在展开时在我的树视图中设置树视图项的 itemssource 属性。
【问题讨论】:
【参考方案1】:您可以使用TreeViewItem.Expanded
事件作为附加事件:
<TreeView TreeViewItem.Expanded="TreeViewItem_Expanded"
ItemsSource="Binding">
...
</TreeView/>
在代码隐藏中,您可以使用OriginalSource
属性识别启动事件的TreeViewItem
:
private void TreeViewItem_Expanded(object sender, RoutedEventArgs e)
TreeViewItem tvi = e.OriginalSource as TreeViewItem;
if (tvi != null)
MessageBox.Show(string.Format("TreeNode '0' was expanded", tvi.Header));
【讨论】:
如果你的意思是视觉后代,你可以通过TreeViewItem的ItemsContainerGenerator获取它们 这很有帮助,谢谢,我希望有赏金给你。最后总结:我想要的视觉后代在扩展事件期间尚未创建。在展开事件中,我保存了 OriginalSource,然后在绑定的任意转换器方法中,我使用 ItemContainerGenerator.ContainerFromIndex(i) 获得了视觉后代并更新了 ItemsSource。以上是关于树视图中任何项目的 OnExpanded 事件的主要内容,如果未能解决你的问题,请参考以下文章