Необходимо сместить точку привязки контрола на угол квадрата внутри контрола

Имеется самодельный контрол такого типа. Необходимо разместить его на канвасе. Мне известны только координаты верхнего левого угла прямоугольника внутри контрола. Как мне разместить контрол, у которого прямоугольник находится под текстом? Размеры текста заранее не известны. Известен только размер прямоугольника и его координаты. Тест расположен относительно прямоугольника. Вьюмодели контролов хранятся в итемлист. И размещаются на канвасе

<ItemsControl.Styles>
    <Style Selector="ItemsControl > ContentPresenter">
        <Setter Property="Canvas.Left" Value="{Binding XPosition_Final}"/>
        <Setter Property="Canvas.Top" Value="{Binding YPosition_Final}"/>
    </Style>
</ItemsControl.Styles>

При этом они могут быть повернуты вокруг этого угла (но это решилось смещением ТрансформОриджин в коде контрола) Не удается только правильно спозиционировать их( контрол

Если текст снизу квадрата, то контрол позиционируется правильно (т.к. верхний левый угол квадрата = верхнему левому углу контрола)правильно спозиционировано Если текст находится сверху квадрата, то контрол контрол позиционируется по своему верхнему левому углу, а не по углу квадрата. Это не правильное размещениеНе правильно разместился Требуется разместить контрол вот так.Как требуется разместить На руках у меня координаты углов квадрата. Размер текста во вьюмоделе вычислить нет возможности. Пробовал менять трансформ ориджин контрола,не помогло.


Ответы (1 шт):

Автор решения: Алексей Козлов

Внутри контрола получил позицию прямоугольника и задал отрицательный маржин контролу. Все работает как нужно.

→ Ссылка