各位大神,WPF中,有一个Treeview,当点击某个节点时,选中的是他的父节点,我在SelectedItemChanged中加了一个断点,发现这个事件被触发了两次,一次执行的是选中我当前点击的这个节点,第二次执行的是选中了他的父节点。求解。。。。
Treeview定义:
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());//加载并显示文件 } }
PropertyNodeItem newItem = e.NewValue as PropertyNodeItem;
这句代码之后对newItem进行判断,如果是需要执行事件逻辑的newItem,就执行,不然就Return掉。
至于会执行二次,那是控件机制的问题。
Return掉也不管用。。还是会执行两次
自己解决,结贴!
楼主怎么解决的,请教下哈
我是用的下面的方式解决的。
参考链接:
http://www.codeproject.com/Tips/208896/WPF-TreeView-SelectedItemChanged-called-twice
@起个昵称真难: 真的很感谢
@幕三少: 真的不用客气~~~