Наряду с ответом Чарли, я могу добавить немного больше к тому, что вы можете сделать, чтобы сделать это
Надеемся, что библиотека DragDrop выдаст вам событие сброса, которое может дать вам перетаскиваемый элемент (Source). Source.DataContext будет элементом в вашей коллекции ObservableCollection, и вы можете легко найти OLD_INDEX с помощью Collection.IndexOf (item). Теперь, так как ваша библиотека перетаскивания переместила источник.
Вы можете получить NEW_INDEX с помощью ItemsContainerGenerator.IndexFromContainer (источник), если источником является ContentControl для ItemsControl. Или же вам может понадобиться пройтись по VisualTree, чтобы узнать ContentControl, который составлял ItemsControl. Это зависит от реализации библиотеки перетаскивания.
Теперь collection.Move (OLD_INDEX, NEW_INDEX) вот и все.