Expose IsDropBeforeAllowed, IsDropAfterAllowed and IsDropInsideAllowed properties in order to facilitate the implementation of complicated drag/drop scenarios in MVVM scenarios.
Update: The suggested approach would be to use an attached behavior for DragDropManager.DragOverEvent in order to change the default TreeView behavior.
DropAction property of a TreeViewDragDropOptions instance could be used to customize the drop operation.
Also, the DropPosition property of the TreeViewDragDropOptions instance could be used to check current drop case.
An instace of TreeViewDragDropOptions could be retreived from DragOverEvent event arguments.