WPF TreeView 选择事件执行两次,获取TreeView的父节点的解决方法

1.TreeView选择事件执行两次

Very often, we need to execute some code in SelectedItemChanged depending on the selected TreeViewItem. ButSelectedItemChanged is called twice. This is due to stealing focus from the main window, which is screwing something up.

What we have to do to avoid this is simply delay the call to our code, i.e., MyFunction() which we need to execute inSelectedItemChanged. Here's a workaround which delays the call to open the new window until the item selection code finishes up:

private delegate void NoArgDelegate();
 
void Window1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
  Dispatcher.BeginInvoke(DispatcherPriority.Background, 
        (NoArgDelegate)delegate { MyFunction(); });
}

2.Treeview获取父节点

   private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            //节点(是子节点或者是根节点)
            TreeViewItem item = treeView1.SelectedItem as TreeViewItem;
 
            //获取父节点
            TreeViewItem parent = item.Parent as TreeViewItem;
            //判断父节点是否存在
            if (parent != null) {
                //显示父节点信息,这里显示 Header 信息
                MessageBox.Show("父节点的Header:" + parent.Header.ToString());
            } else {
                MessageBox.Show("没有父节点!");
            }
 
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吉浦迅科技

DAY46:阅读Surface Reference API

reads the CUDA array bound to the one-dimensional surface reference surfRef usin...

1015
来自专栏漫漫深度学习路

tensorflow自定义op:work_shard

强行解释 work_shard 在学习 tensorflow 自定义 op 的时候碰到的,google 了一下,也没有找到详细的介绍,难道是姿势不对?? ...

3067
来自专栏Python

Python任务调度模块 – APScheduler,Flask-APScheduler实现定时任务

  看代码,定义一个函数,然后定义一个scheduler类型,添加一个job,然后执行,就可以了,代码是不是超级简单,而且非常清晰。看看结果吧。

5830
来自专栏菩提树下的杨过

"RDLC报表"速成指南

RDLC报表是微软自家的报表,已经集成在vs2010中,相对水晶报表更轻量级,更重要的是:可直接在web项目中使用。 使用步骤: 一、创建DataSet 右击-...

30410
来自专栏章鱼的慢慢技术路

在Unity场景中控制日夜的轮转

2374
来自专栏数据结构与算法

cf559C. Gerald and Giant Chess(容斥原理)

从$(1, 1)$到$(h, w)$不经过障碍点的方案数为$C(h + w, h)$

761
来自专栏向治洪

Android 增量更新和升级

在年初的时候,尝试了一把热修复技术,当时选择的是阿里的andfix,使用起来也很简单,这里就不在多少,如果你对andfix有兴趣请链接:点击打开链接。虽然网上将...

5229
来自专栏C#

Apple的LZF算法解析

    有关LZF算法的相关解析文档比较少,但是Apple对LZF的开源,可以让我们对该算法进行一个简单的解析。LZFSE 基于 Lempel-Ziv ,...

2957
来自专栏Kubernetes

Kubernetes Resource QoS机制解读

Kubernetes Resource QoS Classes介绍 Kubernetes根据Pod中Containers Resource的request和li...

39712
来自专栏hbbliyong

检测端口是否被占用

        当我们要创建一个Tcp/Ip Server connection ,我们需要一个范围在1000到65535之间的端口 。 但是本机一个端口只能一...

29710

扫码关注云+社区