以下の記事を参考にさせてもらいました。
同じ方のGitHubにあるようにBehaviorsにした方が良いです。
SavannahManager/TreeViewItemInfoBase.cs at master · AonaSuzutsuki/SavannahManager · GitHub
SavannahManager/MoveableTreeViewBehavior.cs at master · AonaSuzutsuki/SavannahManager · GitHub
ただ、自分のTreeNodeのViewModelを合わせる必要はあります。
Parentや、AfterSeparatorVisibilityのプロパティを持たせる必要があります。
Separatorって何?って思ったのですが、これはドラッグアンドドロップした時、どこにドロップしようとしているのかわかるようにするためです。
これには、参りました。