Я заполняю TreeView через XmlDataProvider и уже реализовал функцию перетаскивания, поэтому я могу перемещать узлы и удалять узлы из других мест.
Но я реализовал только простейшую форму; когда вы отбрасываете, он вставляется как дочерний узел, на который он отбрасывается. Эта функциональность работает как задумано. Но я также хочу иметь возможность бросать элемент между двумя узлами, чтобы он стал братом или сестрой.
Как мне решить эту проблему?
В настоящее время я использую 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.