在WPF树视图控件中,我需要将子节点添加到我使用mousedoubleclick事件选择的父节点。
http://msdn.microsoft.com/en-us/library/system.windows.controls.treeview.selecteditem.aspx
我按照MSDN中的步骤操作,但是当我这样做时,我得到invalidCastException。
TreeViewItem newChild = (树型视图)treeView1.SelectedItem;
我该如何解决这个问题?
由于
答案 0 :(得分:2)
SelectedItem
会返回选定的数据项,而非表示它的视觉效果。
如果您需要访问所选的TreeViewItem
,请使用ItemContainerGenerator:
TreeViewItem item = treeView1.ItemContainerGenerator.ContainerFromItem(treeView1.SelectedItem) as TreeViewItem;
不确定它是否适用于嵌套项目...您可能必须使用父TreeViewItem的ItemContainerGenerator,这不是很方便
编辑:刚刚测试过,实际上它只适用于根节点......无论如何,添加节点的最佳方法是使用绑定和HierarchicalDataTemplate
。您只需要将对象添加到数据源,并自动添加相应的TreeViewItem(前提是包含的集合实现INotifyCollectionChanged ...)
答案 1 :(得分:1)
添加()哪种类型的项目到树?将返回相同的类型 如果是混合使用,请使用
TreeViewItem newChild = treeView1.SelectedItem as TreeViewItem;
if (newChild != null) { ... }