Я считаю, что вы можете достичь того, что вы хотите, используя метод TransformToAncestor(...)
.Это даст вам преобразование, которое вы можете использовать для получения смещения.Насколько я понимаю, если вы извлекаете преобразование из Canvas
в UserControl
, а затем применяете это к позиции (0, 0), то вы должны получить свое смещение.
Так чтокод должен выглядеть примерно так:
GeneralTransform transform = canvas.TransformToAncestor(this);
Point offset = transform.Transform(new Point(0, 0));
Где canvas
- ваш Canvas
элемент управления, а this
- ваш UserControl
.
Дополнительные сведения см. в документации по MSDN..