如何添加WPF treeView节点点击事件获取节点值

use*_*352 6 c# wpf treeview

TreeView在 wpf 中有一个如何获取TreeView节点单击事件以便我可以获得用户单击的节点的值?

沙姆尔

<Grid Height="258" Width="275">
    <TreeView Height="258" HorizontalAlignment="Left" Name="treeView1" VerticalAlignment="Top" Width="275">    
    </TreeView>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我已经TreeView从 C# 代码填充了它。我需要在 C# 代码中写入什么事件方法才能获取用户在我的 C# 代码中单击的节点的值。

要加载的代码隐藏

TreeViewItem treeItem = null;
treeItem = new TreeViewItem();
treeItem.Header = "Name";
Run Code Online (Sandbox Code Playgroud)

pus*_*raj 7

由于 TreeViewItem 或 TreeView 没有可用的 Click 事件,因此这里有相同的可能解决方法

C# 代码有两个选择

使用MouseLeftButtonUpwhich会在item上每次释放鼠标左键时触发,类似于click

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

    void treeItem_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        //your logic here
    }
Run Code Online (Sandbox Code Playgroud)

或使用 Selected 作为触发器,如果​​单击所选元素可能不会触发

    void preparemethod()
    {
        ...
        TreeViewItem treeItem = null;
        treeItem = new TreeViewItem();
        treeItem.Header = "Name";
        treeItem.Selected += treeItem_Selected;
    }

    void treeItem_Selected(object sender, RoutedEventArgs e)
    {
        //your logic here
    }
Run Code Online (Sandbox Code Playgroud)

在这两种方法中,发送者都是被单击的节点。你可以用作

例子

    void treeItem_Selected(object sender, RoutedEventArgs e)
    {
        TreeViewItem item = sender as TreeViewItem;
        //you can access item properties eg item.Header etc. 
        //your logic here 
    }
Run Code Online (Sandbox Code Playgroud)