Похоже, у вас есть несколько «элементов управления», которые вы должны создать, чтобы упростить управление этим большим составным элементом управления.
Большая часть сложного поведения, которое у вас есть, - это принудительное перетаскивание элементов управления элементами в данной строке (на самом деле, сложная часть - ограничение элементов управления элементами в других строках)
Итак, сначала я бы создал элемент управления ItemsControlGroup. Нечто подобное говорит радиогруппа, где каждый элемент управления является частью похожей группы. Вы можете сделать это, просто подключив свойство для имени группы. Это даст вам возможность выяснить, является ли цель допустимым местом падения для перетаскиваемого предмета.
Построение всего этого должно отличаться от построения этой схемы "плавательной дорожки", за которой вы хотите.
Если у вас есть элемент управления перетаскиванием, вы можете построить макет несколькими различными способами.
На этом этапе DataGrid может быть не слишком сложным, как указывал Зеби.
Вы также можете получить набор вложенных стековых панелей или какую-то сетку. Макет будет легкой частью.