我有一个TreeView,它使用HierarchicalDataTemplate绑定(bind)其数据。

看起来像这样:

<TreeView x:Name="mainTreeList" ItemsSource="{Binding MyCollection}>
  <TreeView.Resources>
    <HierarchicalDataTemplate
     DataType="{x:Type local:MyTreeViewItemViewModel}"
     ItemsSource="{Binding Children}">
      <!-- code code code -->
    </HierarchicalDataTemplate>
  </TreeView.Resources>
</TreeView>

现在,从说完主窗口的代码后面,我想获取当前选择的TreeViewItem。但是,如果我使用:
this.mainTreeList.SelectedItem;

selectedItem类型为MyTreeViewItemViewModel。但是我想获取“父”或“绑定(bind)”的TreeViewItem。我不会将其传递给我的TreeViewItemModel对象(甚至不知道如何)。

我怎样才能做到这一点?

最佳答案

Bea Stollnitz关于此的博客条目中,尝试

TreeViewItem item = (TreeViewItem)(mainTreeList
    .ItemContainerGenerator
    .ContainerFromIndex(mainTreeList.Items.CurrentPosition));

09-11 18:09