Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何添加WPF treeView节点单击事件以获取节点值_C#_Wpf_Treeview - Fatal编程技术网

C# 如何添加WPF treeView节点单击事件以获取节点值

C# 如何添加WPF treeView节点单击事件以获取节点值,c#,wpf,treeview,C#,Wpf,Treeview,我在WPF中有一个TreeView。现在,我想获取TreeView节点单击事件,以便获得用户单击的节点的值。 代码如下: <Grid Height="258" Width="275"> <TreeView Height="258" HorizontalAlignment="Left" Name="treeView1" VerticalAlignment="Top" Width="275"> </TreeView> </Grid&g

我在
WPF
中有一个
TreeView
。现在,我想获取
TreeView
节点单击事件,以便获得用户单击的节点的值。 代码如下:

<Grid Height="258" Width="275">
    <TreeView Height="258" HorizontalAlignment="Left" Name="treeView1" VerticalAlignment="Top" Width="275">    
    </TreeView>
</Grid>

像这样,我填充了TreeView,因为TreeView或TreeView没有可用的点击事件,所以这里有可能解决同样的问题

从C#代码中有两个选项

使用
MouseLeftButtonUp
,每次在项目上释放鼠标左键时都会触发该按钮,类似于单击

    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
    }
或使用选定的作为触发器,如果单击选定的元素,则可能不会触发

    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
    }
在这两种方法中,发送方都是已单击的节点。你可以用

范例

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

c代码在哪里?您需要单击的节点还是选定的节点?通常在点击之后,一个节点也会被选中。@pushpraj实际上,C#代码很长。所以我只发布了一个小片段,我已经添加到了加载的窗口中app@Ok先生。我需要单击的一个Sir..@pushpraj Sir string header=item.header;正确吗?好的,先生。由于我是第一次使用wpf,因此如何将所选值从发送者获取到字符串中您可以访问项目属性,例如项目标题等。将发送者强制转换到TreeViewItem后,请参阅更新的答案。如果我没有错,
TreeViewItem item=发送者作为TreeViewItem
是已选择的树视图项。如果没有,请澄清你所说的项目是什么意思?我在这里有点迷茫,项目是被点击的节点,项目。标题是你在节点文本和项目中看到的文本。项目是它的子项目。如果这些价值都不是,那么你感兴趣的价值还有什么?您在哪里设置该值?item.Items是子项的对象集合,因此您可以将其用作TreeViewItem child1=item。Items[0]用作TreeViewItem;或者您可以在item.Items上的foreach循环中访问。foreach(item.Items中的TreeViewItem子项){//此处的逻辑}
    void treeItem_Selected(object sender, RoutedEventArgs e)
    {
        TreeViewItem item = sender as TreeViewItem;
        //you can access item properties eg item.Header etc. 
        //your logic here 
    }