如何查找与TreeViewItem关联的基础元素

时间:2012-03-27 21:40:02

标签: c# wpf mvvm treeview

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

<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相关联?

1 个答案:

答案 0 :(得分:1)

我认为它出现在container.Header中,可能看起来很奇怪。