在WPF C#TreeView中获取子节点的父节点

我知道使用WPF在C#中编程与传统的C#程序不同,因此大多数在线资料都没有说明我需要的内容。

我的WPF窗口中有一个TreeView控件,我有父节点和子节点。 我想将它们存储在Node类型的列表中(id,name,parent)。

在此处输入图像描述

我使用以下命令获取所选项目/节点的名称:

private void TreeViewItem_OnItemSelected(object sender, RoutedEventArgs e) { TreeViewItem item = treeView.SelectedItem as TreeViewItem; nameTxt.Text = item.Header.ToString(); } 

我尝试在使用它之前立即获取子节点的Parent:

 TreeViewItem item = treeView.SelectedItem as TreeViewItem; nameTxt.Text = item.Parent.ToString(); 

但是,这将返回根父(A)而不是子父(即2)。

我应该做些什么来改变孩子的直接父母而不是根父母? 🙂

编辑:这是XAML

       

创建了一个小例子来演示您的问题

MainWindow.xaml中

                   

在Code Behind中,即MainWindow.xaml.cs

  private void TreeViewItem_OnItemSelected(object sender, RoutedEventArgs e) { TreeViewItem item = e.OriginalSource as TreeViewItem; if (item != null) { ItemsControl parent = GetSelectedTreeViewItemParent(item); TreeViewItem treeitem = parent as TreeViewItem; string MyValue= treeitem .Header.ToString();//Gets you the immediate parent } } public ItemsControl GetSelectedTreeViewItemParent(TreeViewItem item) { DependencyObject parent = VisualTreeHelper.GetParent(item); while (!(parent is TreeViewItem || parent is TreeView)) { parent = VisualTreeHelper.GetParent(parent); } return parent as ItemsControl; } 

它完成了。