【问题标题】:WPF TreeView - selecting and expanding nodesWPF TreeView - 选择和扩展节点
【发布时间】:2011-07-27 08:08:48
【问题描述】:

我认为我的问题相当基本,但我找不到答案:
我有一个 TreeView,但我不知道如何监控节点的选择。我在TreeView.SelectedItemChangedTreeViewItem.Expanded 的处理程序处都有断点。当一个节点展开时,我确实看到 TreeViewItem.Expanded 处理程序在工作,但是当单击一个节点时,这些事件都不会被触发。
我做错了什么?

谢谢。

树视图代码:

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

【问题讨论】:

    标签: c# wpf xaml treeview


    【解决方案1】:

    您不应该在您的DataTemplate 中添加TreeViewItemTreeViewItemTreeView 自动创建。 DataTemplate 定义了TreeViewItem内容,而不是TreeViewItem 本身。现在你有两个嵌套的TreeViewItems,这可能就是它不能按预期工作的原因。试试吧:

            <HierarchicalDataTemplate ItemsSource="{Binding Path=TreeNodes, Mode=TwoWay}" DataType="{x:Type TestExplorer:FolderTreeNode}">
                <TextBlock Text="{Binding Name}"/>
            </HierarchicalDataTemplate>
    

    【讨论】:

    • 这解决了!谢谢!我可能应该阅读更多关于模板的信息,我在一个解释如何将树绑定到 ObservableCollection 的网页中看到了这种用法,并认为它会起作用......
    【解决方案2】:

    尝试TreeViewItem.Selected 事件而不是TreeView.SelectedItemChanged

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      相关资源
      最近更新 更多