简体   繁体   English

WPF-如何获取触发TreeViewItem.Loaded事件的TreeViewItem?

[英]Wpf- How can I get the TreeViewItem that triggered the TreeViewItem.Loaded event?

I am trying to attach some handlers to each TreeViewItem as they are loaded and then remove the handlers as they are unloaded. 我试图在每个TreeViewItem加载时附加一些处理程序,然后在卸载时删除这些处理程序。

Here is the Code that I have in my custom control which inherits from TreeView : 这是我从TreeView继承的自定义控件中的代码:

public ModdedTreeView()
    {
        this.AddHandler(TreeViewItem.LoadedEvent, new RoutedEventHandler(ItemLoaded));            

        this.AddHandler(TreeViewItem.UnloadedEvent, new RoutedEventHandler(ItemUnloaded));
    }

    protected void ItemLoaded(object sender, RoutedEventArgs e)
    {
        TreeViewItem item = e.OriginalSource as TreeViewItem;

        if (item == null)
            return;

        item.AddHandler(TreeViewItem.CollapsedEvent, new RoutedEventHandler(ItemCollapsed));

        item.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(ItemExpanded));

        item.AddHandler(TreeViewItem.SelectedEvent, new RoutedEventHandler(ItemSelected));
    }


    protected void ItemUnloaded(object sender, RoutedEventArgs e)
    {
        TreeViewItem item = e.OriginalSource as TreeViewItem;

        if (item == null)
            return;

        item.RemoveHandler(TreeViewItem.CollapsedEvent, new RoutedEventHandler(ItemCollapsed));

        item.RemoveHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(ItemExpanded));

        item.RemoveHandler(TreeViewItem.SelectedEvent, new RoutedEventHandler(ItemSelected));
    }

Edit: 编辑:

I still can not figure out what is going on. 我仍然不知道发生了什么。 It just seems to be picking up the TreeView loaded event instead of the TreeViewItem loaded event. 它似乎只是在拾取TreeView加载的事件,而不是TreeViewItem加载的事件。

加载是一个路由事件,因此您可以在OriginalSource属性中找到其源,该属性应该是触发该事件的treeviewitem。

Apparently the TreeViewItem.Loaded event is a direct event. 显然TreeViewItem.Loaded事件是直接事件。 So there is no way to accomplish what I was trying. 因此,没有办法完成我所尝试的工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM