首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wpf- -如何获得触发TreeViewItem.Loaded事件的TreeViewItem.Loaded?

Wpf- -如何获得触发TreeViewItem.Loaded事件的TreeViewItem.Loaded?
EN

Stack Overflow用户
提问于 2010-08-30 03:42:05
回答 1查看 1.2K关注 0票数 0

我试图在每个TreeViewItem加载时附加一些处理程序,然后在卸载处理程序时删除它们。

下面是我从TreeView继承的自定义控件中的代码

代码语言:javascript
复制
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));
    }

编辑:

我还是搞不懂到底是怎么回事。它似乎只是选择了TreeView加载的事件,而不是TreeViewItem加载的事件。

EN

回答 1

Stack Overflow用户

发布于 2010-08-30 06:52:41

Loaded是一个路由事件,因此您将在OriginalSource属性中找到它的源,该属性应该是触发事件的treeviewitem。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3597720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档