正在WPF TreeView中获取单击时选定子节点事件的值

3lxsmp7m  于 2023-02-16  发布在  其他
关注(0)|答案(2)|浏览(361)

我在WPF中有一个TreeView,它包含一个主节点和5个子节点。一旦主节点被展开,我们就得到子节点。现在展开子节点,我们得到一些值。这是我在WPF中的TreeView的表示。在这一个中,我想得到已经展开的5个子节点之一的值。
这是我正在尝试的代码。

void getTreeView()
{

    TreeViewItem treeItem = null;
    treeItem = new TreeViewItem();
    treeItem.Header = "Name";
    treeItem.MouseLeftButtonUp += treeItem_MouseLeftButtonUp;
}

void treeItem_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
   TreeViewItem item = sender as TreeViewItem;
   foreach(TreeViewItem child in item.Items) { 

       string childNode=child.Header as string;

 }
}

但是在childNode中,我得到的是所有5个子节点的值,而我需要的是所选节点的值。
请帮帮我

iugsix8n

iugsix8n1#

如果只想获取选定节点,请检查TreeViewItem的**IsSelected**属性,如下所示:

foreach(TreeViewItem child in item.Items) 
{ 
   if(child.IsSelected)
   {
      string childNode= child.Header.ToString();
   }
}
kpbwa7wx

kpbwa7wx2#

我刚刚让下面的代码工作。发送者最终是整个TreeView控件,而不仅仅是选定的TreeViewItem。

private void treeS3Items_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    System.Windows.Controls.TreeView s3Tree = sender as System.Windows.Controls.TreeView;
    System.Windows.Controls.TreeViewItem treeS3Item = s3Tree.SelectedItem as System.Windows.Controls.TreeViewItem;

    MessageBox.Show($"You clicked on [{treeS3Item.Header}]");
}

相关问题