WPF TreeView - 选择和扩展节点

时间:2011-07-27 08:08:48

标签: c# wpf xaml treeview

我认为我的问题很基本,但我找不到答案:
我有一个TreeView,我无法弄清楚如何监控节点的选择。我在TreeView.SelectedItemChangedTreeViewItem.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.SelectedTreeViewItem.Selected都会被触发。有什么解释吗?

2 个答案:

答案 0 :(得分:3)

您不应在TreeViewItem中加DataTemplateTreeViewItemTreeView自动创建。 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