Drag-Drop в treeview, вставка между узлами

Я заполняю TreeView через XmlDataProvider и уже реализовал функциональность Drag-and-drop, так что я могу перемещать узлы вокруг и бросать узлы из других мест.

Но я реализовал только самую простую форму; когда вы бросаете узел, он вставляется в качестве дочернего узла в узел, на который он брошен. Эта функциональность работает так, как задумано. Но я также хочу иметь возможность бросить элемент между двумя узлами, чтобы он стал дочерним узлом.

Как мне решить эту проблему?

В настоящее время я использую HierarchicalDataTemplate, с панелью StackPanel:

<HierarchicalDataTemplate x:Key="XmlTreeTemplate">
   <HierarchicalDataTemplate.ItemsSource>
     <Binding XPath="child::node()" />
   </HierarchicalDataTemplate.ItemsSource>
   <StackPanel
      AllowDrop="True"
      DragEnter="StackPanelDragEnter"
      DragLeave="StackPanelDragLeave"
      DragOver="StackPanelDragOver"
      ...

Событие Drop происходит на TreeView.

5
задан AkselK 28 November 2011 в 14:33
поделиться