我认为我的问题很基本,但我找不到答案:
我有一个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
都会被触发。有什么解释吗?
答案 0 :(得分:3)
您不应在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>
答案 1 :(得分:1)
尝试TreeViewItem.Selected
事件而不是TreeView.SelectedItemChanged