我有如下的TreeView:
<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过于复杂,以至于无法创建这样的事件来返回单击项目的文本值?
发布于 2021-11-09 13:08:21
您可以为每个TreeViewItem指定Tag属性。在MouseClick事件处理程序->中,您可以将发送方转换为TreeViewItem。然后你就可以获取它的标签属性了
<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;
}
}https://stackoverflow.com/questions/69898323
复制相似问题