C#WPF - 在treeview中将子节点添加到选定节点

时间:2009-09-08 18:22:01

标签: wpf treeview

在WPF树视图控件中,我需要将子节点添加到我使用mousedoubleclick事件选择的父节点。

http://msdn.microsoft.com/en-us/library/system.windows.controls.treeview.selecteditem.aspx

我按照MSDN中的步骤操作,但是当我这样做时,我得到invalidCastException。

  

TreeViewItem newChild =   (树型视图)treeView1.SelectedItem;

我该如何解决这个问题?

由于

2 个答案:

答案 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) { ... }