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("没有父节点!");
            }

        }

  

  

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

时间: 2025-01-07 03:05:15

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

JS: javascript 点击事件执行两次js问题 ,解决jquery绑定click事件出现点击一次执行两次问题

javascript 点击事件执行两次js问题 在JQuery中存在unbind()方法,先解绑再添加点击事件,解决方案为: $(".m-layout-setting").unbind('click').click(function(){ //此处填写逻辑代码 }) ------ 因为利用js在页面加载后添加需要点击事件的代码,发现在点击后会代码会执行两次,因为有toggle效果,导致弹窗出现又很快丢失 查了一些资料,发现这是冒泡的原因,需要在点击事件代码中加入阻止冒泡的方法: e.s

Jquery 事件执行两次

js(jquery)的on绑定点击事件执行两次的解决办法-不是事件绑定而是事件冒泡 阻止冒泡的方法并不止 return false 这一种,还有event.stopPropagation(),这两种方法是有区别的,简单来说:event.stopPropagation()会阻止事件往上冒泡,但是并不阻止事件本身:return false 则是既阻止了事件往上冒泡又阻止了事件本身. 修改前 $(".project_select").change(function () { var chec

jquery的on绑定点击事件执行两次的解决办法

js(jquery)的on绑定点击事件执行两次的解决办法—不是事件绑定而是事件冒泡 遇到的问题:jquery中用.on()给页面中新加的元素添加点击事件时,点击事件源,绑定的事件执行两次,这里的alert会执行两次,相应地数组删除也执行两次,具体代码如下(其中.tabDel是页面加载之后新生成的元素,故不能用普通的$(‘.tabDel).click(function(){})的方法添加点击事件): 上网找的解决方法大概有一下两种:1.在用 on 绑定 click 事件之前,对该事件解绑,也就是

php表单提交时获取不到post数据的解决方法

原文:http://blog.csdn.net/whd526/article/details/53263181 博主运行PHP环境:windows+phpstorm+xampp 初学php,用echo $_POST["variable"]和var_dump($_POST) 都获取不到post数据. 解决方法如下: 1.找到php.ini 配置文件,查找enable_post_data_reading变量,确保其打开状态: 2.观察你的运行php的浏览器地址,会发现在PhpStorm中打

使用Powershell 的获取别的机器WMI类失败解决方法!

有些时候需要连接多台机器去获取他们的类,但是有些时候我们发现计算机无法连接,这个时候怎么办呢? 请修改组策略中以下配置: 可以使用Gpmc.msc 进行以后,本地计算机策略--计算机配置--管理模板--网络--网络连接--WIndow防火墙--允许远程管理启用 即可 截图如下: 使用Powershell 的获取别的机器WMI类失败解决方法!,布布扣,bubuko.com

【SQLServer】“无法对数据库’XXX’ 执行删除,因为它正用于复制”的解决方法

警告: 一个或多个现有列的 ANSI_PADDING 设置为 "off",将以 ANSI_PADDING 为 "on" 的设置重新创建 [SQLServer]"无法对数据库'XXX' 执行删除,因为它正用于复制"的解决方法 USE masterEXEC sp_removedbreplication 'YDBS_MFQJ_HomeWorksBook'GO

PHP 获取远程文件大小的3种解决方法

转 http://www.3lian.com/edu/2013/07-12/80472.html 以下是对PHP中获取远程文件大小的3种解决方法进行了详细的介绍,需要的朋友参考下 1.使用file_get_contents() 复制代码 代码如下: <?php $file = file_get_contents($url); echo strlen($file); ?> 2. 使用get_headers() 复制代码 代码如下: <?php $header_array = get_hea

[Q]“获取AutoCAD安装信息时失败...”解决方法

“获取AutoCAD安装信息时失败...”解决方法:在“setup.exe”上右键,以管理员权限运行即可.

vue_elementUI_ tree树形控件 获取选中的父节点ID

el-tree 的 this.$refs.tree.getCheckedKeys() 只可以获取选中的id 无法获取选中的父节点ID想要获取选中父节点的id;需要如下操作1. 找到工程下的node_modules文件夹 然后查找 element-ui.common.js文件 node_modules\element-ui\lib\element-ui.common.js2. 按Ctrl+F搜索TreeStore.prototype.getCheckedKeys这个方法3. 把// if (chi