Вы хотите добавить своего перетаскивателя во время перетаскивания. Я видел, как это делалось несколькими разными способами, но быстрый поиск приводит к этому поведению , которое имеет такой же хороший шаблон, как я видел. Репрезентативная выборка:
void itemsControl_PreviewDragEnter(object sender, DragEventArgs e)
{
ItemsControl itemsControl = (ItemsControl)sender;
if (e.Data.GetDataPresent(ItemType))
{
object data = e.Data.GetData(ItemType);
InitializeDragAdorner(itemsControl, data, e.GetPosition(itemsControl));
InitializeInsertAdorner(itemsControl, e);
}
e.Handled = true;
}
Они красиво оборачивают представление украшения в классе DragAdorner
. (Хотелось бы, чтобы я сделал это таким образом, на самом деле)
Я также видел трюки с созданием украшения из визуальной кисти первоначально перетаскиваемого элемента, но я думаю, что мне пока больше нравится этот подход.
Кстати: после нескольких подходов я настоятельно рекомендую перенести код перетаскивания в поведение. В противном случае вы повсюду. Правильное назначение команд с MVVM может быть довольно сложным, но оно того стоит, ИМХО.