Я работаю над расширением примера Microsoft resize Adorner
, и мне нужно иметь возможность изменить положение элемента после того, как, скажем, перетаскивается нижний левый маркер перетаскивания.
Таким образом, если у меня есть текстовое поле, скажем, шириной 150, с высотой 35, размещенное на моей форме, и нижний левый маркер перетаскивания изменяет ширину на 200, правая часть текстового поля остается неизменной, но левый край перемещается левый.
Так что мне нужно знать верхние левые координаты UIElement. Я пробовал Canvas.GetLeft и Canvas.GetTop, но они возвращают NaN, что сбивает с толку.
Я только что попробовал VisualTreeHelper.GetOffset, который возвращает смещение, но когда вы пытаетесь использовать его в методе расположения элемента, оно исчезает, предположительно, так как значения в смещении слишком велики.
В дни до Wpf система координат была довольно простой, я думаю, что wpf усложнил вещи.