繁体   English   中英

WPF获取treeviewitem的内容

[英]WPF get Content of a treeviewitem

我需要检查用户每次更改时选择的treeviewitem 我使用了SelectedItemChanged方法或任何所谓的方法。 它工作正常,但现在我需要为每个可能的treeviewitem做一个switch case 但是我无法做到这一点,因为我不知道如何获得它的名字。 我在互联网上检查了一下,但有人说使用treeview.SelectedItem但它返回System.Windows.Controls.TreeViewItem Header: Items.Count:0 我想知道是否可以完全在.cs代码文件中执行此操作,或者是否必须使用数据绑定等。

谢谢你的帮助。

编辑:

这是我设置Treeview和TreeViewItems的方式。 它们都像第二个例子。

<TreeView x:Name="treeview" Margin="10,10,0,4" HorizontalAlignment="Left" Width="192" Background="#FFA45353" SelectedItemChanged="treeview_SelectedItemChanged"">
        <TreeViewItem IsExpanded="False">
            <TreeViewItem.Header>
                <StackPanel Orientation="Horizontal">
                    <Image Source="./Resources/smallicons/icon.jpg"/>
                    <TextBlock Text=" Main" FontSize="14"/>
                </StackPanel>
            </TreeViewItem.Header>
            <!--==============================================================================================-->
            <TreeViewItem>
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="First" Foreground="Black" />
                    </StackPanel>
                </TreeViewItem.Header>
            </TreeViewItem>
            <!--==============================================================================================-->

您在找这个吗?

TreeViewItem selectedNode = (TreeViewItem)treeView.SelectedItem;
string strSelectedNode = selectedNode.Header.ToString();

上面的代码段假设了一些事情

顺便说一句,这段代码是

private void TreeViewItem_Selected(object sender, RoutedEventArgs e)
{
    TreeViewItem selectedNode = (TreeViewItem)treeView.SelectedItem;
    MessageBox.Show(selectedNode.Header.ToString());
}

好的...根据您的treeview和treeview项目设置,您必须编写如下代码。

private void treeview_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {    
            TreeViewItem selectedNode = (TreeViewItem)treeview.SelectedItem;
            var sp = selectedNode.Header as StackPanel;
            var tb = sp.Children[0] as TextBlock;
            var selecteditem = tb.Text;
            //MessageBox.Show(selecteditem);
            switch (selecteditem)
            {
                case "Main":
                    MessageBox.Show(selecteditem);
                    break;
                case "First":
                    MessageBox.Show(selecteditem);
                    break;
                default:
                    MessageBox.Show("no matching item found");
                    break;
            }
        }

在这里,我正在挖掘选定的树形视图项目以获取选定的树形视图项目的文本。 您可能需要稍微调整代码才能使其完全正常运行。 让我知道您是否需要任何帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM