Это происходит потому, что ListBoxDragDropTarget и PanelDragDropTarget написаны по-разному.При перетаскивании между 2 ListBoxDragDropTargets вы передаете часть данных, привязанную к элементу управления , тогда как при перетаскивании между 2 PanelDragDropTargets передается UIElement, который «подобран».
Вот почему Дмитрий должен ответить.PanelDragDropTarget проверяет, является ли элемент, который вы перетащили из ListBoxDragDropTarget, элементом UIElement, и, поскольку это не просто элемент данных, он возвращает false для CanAddItem.Это отключает возможность выпадения.Следовательно, вы видите курсор со стрелками вверх / вниз.
Чтобы все заработало, вы должны наследовать от PanelDragDropTarget и использовать вместо этого этот дочерний класс.Необходимо переопределить метод CanAddItem как минимум:
public class ElementDragDropTarget : PanelDragDropTarget
{
protected override bool CanAddItem(Panel itemsControl, object data)
{
return true;
}
protected override void InsertItem(Panel itemsControl, int index, object data)
{
// Do Work
}
}