WPF树视图-选择和扩展节点

本文关键字:扩展 节点 选择 视图 WPF | 更新日期: 2023-09-27 18:03:44

我想我的问题是相当基本的,但是我找不到答案:
我有一个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都被触发。任何解释吗?

WPF树视图-选择和扩展节点

你不应该把TreeViewItem放在你的DataTemplate里。TreeViewItemTreeView自动创建。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事件