WPF C# TreeView 获取选中项的文本
WPF C# TreeView get text of selected item
我有以下 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>
它将用作菜单表单中的导航,但我正在努力创建一个事件,该事件将在单击某些内容时触发,然后 return 中的项目上显示的文本值树视图。
我试过以下文章:
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
是否过于复杂,以至于我无法创建此类事件 return 我点击的项目的文本值?
您可以为每个 TreeViewItem 指定标签 属性。
在 MouseClick 事件处理程序中 -> 您将能够将发件人转换为 TreeViewItem.. 并且
然后你就可以拿走 Tag 属性 of it
<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;
}
}
我有以下 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>
它将用作菜单表单中的导航,但我正在努力创建一个事件,该事件将在单击某些内容时触发,然后 return 中的项目上显示的文本值树视图。
我试过以下文章:
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
是否过于复杂,以至于我无法创建此类事件 return 我点击的项目的文本值?
您可以为每个 TreeViewItem 指定标签 属性。 在 MouseClick 事件处理程序中 -> 您将能够将发件人转换为 TreeViewItem.. 并且 然后你就可以拿走 Tag 属性 of it
<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;
}
}