c# - WPF TreeView - 选择和扩展节点

标签 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 被触发。有什么解释吗?

最佳答案

您不应将 TreeViewItem 放入您的 DataTemplate 中。 TreeViewItemTreeView 自动创建。 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/

相关文章:

c# - 为什么 WPF XAML DataContext 绑定(bind)不起作用?

c# - XAML 中有没有一种方法可以在双击时选择文本框中的所有文本?

c# - 打开 window

c# - 解析器缺少 XML 命名空间

c# - CollectionView 与 WPF(或类似的东西)

wpf - 指定的元素已经是另一个元素的逻辑子元素

c# - 绑定(bind)到用户控件的 DependencyProperty 不调用 setter

c# - 如果FirstOrDefault返回null,则返回列表中的第一项

c# - 使用 LINQ 从列表列表中获取不同元素的计数

c# - 如何在 WPF 中使用关闭按钮关闭选项卡?