【问题标题】:OnExpanded event for any item in a treeview树视图中任何项目的 OnExpanded 事件
【发布时间】:2010-11-26 03:45:11
【问题描述】:

我想为我的树视图中的树视图项的任何扩展获取事件。

这个原因,和原来的问题有点无关: 我正在创建一个与 xml 文件树密切相关的树,但我允许在 xml 中包含一个包含元素,因此树可以跨越多个文件。我想在展开时在我的树视图中设置树视图项的 itemssource 属性。

【问题讨论】:

    标签: c# wpf data-binding treeview


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2013-08-14
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多