【问题标题】:C# WPF - Adding a child node to a selected node in treeviewC# WPF - 将子节点添加到树视图中的选定节点
【发布时间】:2010-11-26 14:23:42
【问题描述】:

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

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

我按照 MSDN 中的步骤操作,但执行此操作时出现 invalidCastException。

TreeViewItem newChild = (TreeViewItem)treeView1.SelectedItem;

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 一个更好的主意是将您的TreeView 绑定到一个对象图,并在该图中延迟加载集合属性。

标签: wpf treeview


【解决方案1】:

SelectedItem 返回选定的数据项,而不是表示它的视觉对象。

如果您需要访问选定的TreeViewItem,请使用 ItemContainerGenerator :

TreeViewItem item = treeView1.ItemContainerGenerator.ContainerFromItem(treeView1.SelectedItem) as TreeViewItem;

不确定它是否适用于嵌套项目...您可能必须使用父 TreeViewItem 的 ItemContainerGenerator,这不太方便

编辑:刚刚测试过,确实只适用于根节点...

无论如何,添加节点的最佳方法是使用绑定和HierarchicalDataTemplates。只需要将对象添加到数据源,对应的TreeViewItem就会自动添加(前提是包含集合实现了INotifyCollectionChanged...)

【讨论】:

    【解决方案2】:

    Add() 到树中的是什么类型的项目?将返回相同的类型。
    如果是混合的,使用

    TreeViewItem newChild = treeView1.SelectedItem as TreeViewItem;
    if (newChild != null) { ... }
    

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 2013-03-25
      • 1970-01-01
      • 2012-04-15
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      相关资源
      最近更新 更多