我觉得我的问题很基础,但是我找不到答案:
我有一个 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>
关于c# - WPF TreeView - 选择和扩展节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841240/