如何查找与TreeViewItem关联的underyling元素

本文关键字:关联 TreeViewItem underyling 元素 何查找 查找 | 更新日期: 2023-09-27 18:29:15

我正在尝试为绑定到自定义元素的树视图控件实现拖放:

<TreeView ItemsSource="{Binding FirstGeneration}">
  <TreeView.Resources>
     <HierarchicalDataTemplate DataType="{x:Type NavigationTreeElement}" 
                               ItemsSource="{Binding Children}">
       <StackPanel Orientation="Horizontal" Margin="1">
          <Image Source="open-16x16.png" />
          <TextBlock Text="{Binding Path=DisplayName}" />
       </StackPanel>
     </HierarchicalDataTemplate>
  </TreeView.Resources>
</TreeView>

具有底层类:

 public class NavigationElement
 {
     public string DisplayName { get; set; }
     public ObservableCollection<NavigationElement> Children { get; set; }
 }

我在将渲染的TreeViewItem与底层NavigationElement关联时遇到问题。如果我找到一个TreeViewItem,鼠标在上面,例如:

    private static TreeViewItem GetNearestContainer(UIElement element)
    {
        // Walk up the element tree to the nearest tree view item.
        var container = element as TreeViewItem;
        while ((container == null) && (element != null))
        {
            element = VisualTreeHelper.GetParent(element) as UIElement;
            container = element as TreeViewItem;
        }
        return container;
    }

如何将TreeViewItem与基础NavigationElement关联?

如何查找与TreeViewItem关联的underyling元素

我认为它在container.Header中,尽管看起来很奇怪。