首页新闻找找看学习计划

Wpf treeview SelectedItemChanged 多次触发

0
悬赏园豆:100 [已关闭问题] 关闭于 2014-05-12 16:12

各位大神,WPF中,有一个Treeview,当点击某个节点时,选中的是他的父节点,我在SelectedItemChanged中加了一个断点,发现这个事件被触发了两次,一次执行的是选中我当前点击的这个节点,第二次执行的是选中了他的父节点。求解。。。。

 

Treeview定义:

View Code

 

SelectedItemChanged事件定义:

 private void tvFileStruct_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            PropertyNodeItem newItem = e.NewValue as PropertyNodeItem;
            PropertyNodeItem oldItem = e.OldValue as PropertyNodeItem;

            txtOldItem.Text = String.Format("'{0}'", oldItem == null ? string.Empty : oldItem.Name);
            txtNewItem.Text = String.Format("'{0}'", newItem == null ? string.Empty : newItem.Name);
if (newItem != null && !newItem.IsGroup && newItem.ArticleId > 0)
                    {
                        ShowDocument(newItem.ArticleId.ToString());//加载并显示文件                        
                    }
        }
View Code
起个昵称真难的主页 起个昵称真难 | 菜鸟二级 | 园豆:202
提问于:2014-05-12 12:25
< >
分享
所有回答(3)
0

PropertyNodeItem newItem = e.NewValue as PropertyNodeItem;

这句代码之后对newItem进行判断,如果是需要执行事件逻辑的newItem,就执行,不然就Return掉。

 

至于会执行二次,那是控件机制的问题。

Firen | 园豆:5483 (大侠五级) | 2014-05-12 12:45

Return掉也不管用。。还是会执行两次

支持(0) 反对(0) 起个昵称真难 | 园豆:202 (菜鸟二级) | 2014-05-12 13:04
0

自己解决,结贴!

起个昵称真难 | 园豆:202 (菜鸟二级) | 2014-05-12 16:11
0

楼主怎么解决的,请教下哈

幕三少 | 园豆:1374 (小虾三级) | 2014-08-20 13:12

我是用的下面的方式解决的。

参考链接:

http://www.codeproject.com/Tips/208896/WPF-TreeView-SelectedItemChanged-called-twice

支持(0) 反对(0) 起个昵称真难 | 园豆:202 (菜鸟二级) | 2014-08-21 13:23

@起个昵称真难: 真的很感谢

支持(0) 反对(0) 幕三少 | 园豆:1374 (小虾三级) | 2014-08-21 17:15

@幕三少: 真的不用客气~~~

支持(0) 反对(0) 起个昵称真难 | 园豆:202 (菜鸟二级) | 2014-08-22 12:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册