[英]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 中的單擊事件上獲取所選子節點的值
使用兩者的解決方案,對我不起作用,因為我無法在其中一種情況下訪問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.