WPF树视图-选择和扩展节点
本文关键字:扩展 节点 选择 视图 WPF | 更新日期: 2023-09-27 18:03:44
我想我的问题是相当基本的,但是我找不到答案:
我有一个TreeView,我不知道如何监控节点的选择。我在TreeView.SelectedItemChanged
和TreeViewItem.Expanded
的处理程序中都有断点。当节点展开时,我确实看到TreeViewItem.Expanded
处理程序在工作,但是当单击节点时,这些事件都不会被触发。
我做错了什么?
谢谢。
TreeView代码:
<TreeView Name="TestsTree" Height="Auto" MinHeight="50" ItemsSource="{Binding Path=TreeNodes, Mode=TwoWay}" TreeViewItem.Expanded="TestsTreeExpanded" TreeView.SelectedItemChanged="TestsTreeSelectedItemChanged">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=TreeNodes, Mode=TwoWay}" DataType="{x:Type TestExplorer:FolderTreeNode}">
<TreeViewItem Header="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
编辑:
我试过使用TreeViewItem.Selected
,但它是一样的-当我点击节点的名称没有反应,虽然当我点击扩展区域,TreeViewItem.Selected
和TreeViewItem.Selected
都被触发。任何解释吗?
你不应该把TreeViewItem
放在你的DataTemplate
里。TreeViewItem
由TreeView
自动创建。DataTemplate
定义TreeViewItem
的内容,而不是TreeViewItem
本身。现在您有两个嵌套的TreeViewItems
,这可能就是为什么它没有像预期的那样工作。试试这个:
<HierarchicalDataTemplate ItemsSource="{Binding Path=TreeNodes, Mode=TwoWay}" DataType="{x:Type TestExplorer:FolderTreeNode}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
尝试TreeViewItem.Selected
事件代替TreeView.SelectedItemChanged
事件