должен реализовывать код
Код придется указывать, но сколько может варьироваться. Лично я бы использовал больше кода в этом случае.
Я бы концептуально отделил красные прямоугольники от зеленых границ. Красный треугольник представляет один элемент, который может или не может быть присоединен к другому. Зеленые границы будут содержать горизонтально ориентированную StackPanel
и представляют собой набор элементов, которые прикреплены друг к другу.
Первоначально ни один элемент не был прикреплен ни к какому другому, следовательно, все существующие в нем собственные зеленые рамки, представляющие группы прикрепленных элементов, все имеют только одного члена.
Когда вы «прикрепляете» элемент к другому, красный прямоугольник, представляющий один из элементов, удаляется из существующей панели стека и добавляется в панель стека, содержащую другой. Теперь пустая зеленая рамка удалена из вида.