簡體   English   中英

WPF C# TreeView 獲取所選項目的文本

[英]WPF C# TreeView get text of selected item

我有以下樹視圖:

<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>

它用作菜單表單中的導航,但我正在努力創建一個事件,該事件將在單擊某些內容時觸發,然后返回顯示在樹視圖中項目上的文本值。

我試過以下文章:

在 WPF TreeView 中的單擊事件上獲取所選子節點的值

如何添加WPF treeView節點點擊事件獲取節點值

使用兩者的解決方案,對我不起作用,因為我無法在其中一種情況下訪問item.header ,而在其他情況下,它似乎無法正確創建TreeViewItem item = sender as TreeViewItem

我是否使我的硬編碼TreeView過於復雜,以至於我無法創建此類事件來返回單擊項目的文本值?

您可以為每個 TreeViewItem 指定 Tag 屬性。 在 MouseClick 事件處理程序中 -> 您將能夠將 sender 轉換為 TreeViewItem .. 然后您將能夠獲取它的 Tag 屬性

<TreeViewItem Tag="Link" MouseLeftButtonDown="ClickItem_Handler">
 ...
</TreeViewItem>

在您的表單的代碼隱藏中

protected void ClickItem_Handler(object sender, MouseEventArgs args)
{
    if (sender is TreeViewItem item){
        var header = item.Tag as string;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM