ViewBox
не изменяет никаких свойств своих дочерних элементов, включая Canvas
левое и верхнее значения. Вам необходимо использовать фактические координаты дочернего элемента, а не только значения вложенных свойств.
Вы можете позвонить TranslatePoint
непосредственно на ребенка, если это UIElement
. Чтобы сослаться на верхнюю левую точку дочернего элемента, вы можете использовать (0, 0), который является значением по умолчанию для Point
, поэтому достаточно new Point()
.
Point p = child.TranslatePoint(new Point(), viewboxInstanceParent);
удачи,
EDIT:
Вот видео этого кода в действии: ViewboxChildPosition