首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF C# TreeView获取所选项目的文本

WPF C# TreeView获取所选项目的文本
EN

Stack Overflow用户
提问于 2021-11-09 12:41:14
回答 1查看 55关注 0票数 0

我有如下的TreeView:

代码语言:javascript
复制
<TreeView x:Name="TreeView" 
                  MouseDoubleClick="TreeView_MouseDoubleClick"
                  Width="350">
            <TreeViewItem IsExpanded="True">
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="CogOutline" Margin="0 0 5 0"/>
                        <TextBlock Text="Configuration" FontWeight="Bold"/>
                    </StackPanel>
                </TreeViewItem.Header>
                <TreeViewItem IsExpanded="True">
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="TruckDeliveryOutline" Margin="0 0 5 0"/>
                            <TextBlock Text="Items"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="ArrowUpBoldBoxOutline" Margin="0 0 5 0"/>
                        <TextBlock Text="Configuration"/>
                    </StackPanel>
                </TreeViewItem>
                <TreeViewItem IsExpanded="True">
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="FileDocumentOutline" Margin="0 0 5 0"/>
                            <TextBlock Text="List"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="ClipboardMultipleOutline" Margin="0 0 5 0"/>
                        <TextBlock Text="Management"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="ClipboardListOutline" Margin="0 0 5 0"/>
                        <TextBlock Text="Management"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="ClipboardPlusOutline" Margin="0 0 5 0"/>
                        <TextBlock Text="Sundry Items"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="RelationOneToMany" Margin="0 0 5 0"/>
                        <TextBlock Text="Sundry Addition"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="ClipboardPlusOutline" Margin="0 0 5 0"/>
                        <TextBlock Text="Sundry Addition"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="RelationOneToMany" Margin="0 0 5 0"/>
                        <TextBlock Text="Addition Relations"/>
                    </StackPanel>
                </TreeViewItem>
            </TreeViewItem>
            <TreeViewItem IsExpanded="True">
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="FormatListBulleted" Margin="0 0 5 0"/>
                        <TextBlock Text="Tasks" FontWeight="Bold"/>
                    </StackPanel>
                </TreeViewItem.Header>
                <TreeViewItem IsExpanded="True">
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="TruckDeliveryOutline" Margin="0 0 5 0"/>
                            <TextBlock Text="Items"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="ChartFinance" Margin="0 0 5 0"/>
                        <TextBlock Text="(Converted)"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="ChartFinance" Margin="0 0 5 0"/>
                        <TextBlock Text="(Each)"/>
                    </StackPanel>
                </TreeViewItem>
                <TreeViewItem>
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="CurrencyGbp" Margin="0 0 5 0"/>
                            <TextBlock Text="Material"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                </TreeViewItem>
                <TreeViewItem IsExpanded="True">
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="CurrencyGbp" Margin="0 0 5 0"/>
                            <TextBlock Text="Product"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="Check" Margin="0 0 5 0"/>
                        <TextBlock Text="Validation"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="Update" Margin="0 0 5 0"/>
                        <TextBlock Text="Update All"/>
                    </StackPanel>
                </TreeViewItem>
                <TreeViewItem>
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="Salesforce" Margin="0 0 5 0"/>
                            <TextBlock Text="Bundle"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                </TreeViewItem>
                <TreeViewItem>
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="Calculator" Margin="0 0 5 0"/>
                            <TextBlock Text="Calculator"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                </TreeViewItem>
            </TreeViewItem>
                <TreeViewItem IsExpanded="True">
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="HelpCircleOutline" Margin="0 0 5 0"/>
                            <TextBlock Text="Help" FontWeight="Bold"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <materialDesign:PackIcon Kind="BookOpenOutline" Margin="0 0 5 0"/>
                        <TextBlock Text="Guide"/>
                    </StackPanel>
                </TreeViewItem>
                <TreeViewItem>
                    <TreeViewItem.Header>
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="Link" Margin="0 0 5 0"/>
                            <TextBlock Text="Link"/>
                        </StackPanel>
                    </TreeViewItem.Header>
                </TreeViewItem>
            
        </TreeView>

它将用作菜单表单中的导航,但我正在努力创建一个事件,该事件将在单击某些内容时触发,然后返回树视图中项目上显示的文本值。

我尝试了以下文章:

Getting the value of the Selected Child Nodes on click Event in WPF TreeView

How to add WPF treeView Node Click event to get the node value

使用这两种方法的解决方案对我都不起作用,因为在其中一种情况下,我无法访问item.header,而在其他情况下,它似乎无法正确地创建TreeViewItem item = sender as TreeViewItem

我是否将硬编码的TreeView过于复杂,以至于无法创建这样的事件来返回单击项目的文本值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-09 13:08:21

您可以为每个TreeViewItem指定Tag属性。在MouseClick事件处理程序->中,您可以将发送方转换为TreeViewItem。然后你就可以获取它的标签属性了

代码语言:javascript
复制
<TreeViewItem Tag="Link" MouseLeftButtonDown="ClickItem_Handler">
 ...
</TreeViewItem>

在窗体后面的代码中

代码语言:javascript
复制
protected void ClickItem_Handler(object sender, MouseEventArgs args)
{
    if (sender is TreeViewItem item){
        var header = item.Tag as string;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69898323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档