我在画布上有UIElements(圆形/矩形)。我想获取相对于其父级(画布)的 UIElement 的 X/Y。但我无法得到它。
对此有一些解决方案。我尝试这样做(查找按钮/UIElement相对于网格Windows Phone在屏幕上的位置)
var transform = button.TransformToVisual(grid);
Point absolutePosition = transform.Transform(new Point(0, 0));
但我在绝对位置得到 0,0。我能够在地图中正确看到圆圈。但我不确定为什么我弄错了 X/Y。
这是我的实际代码。
Canvas.SetLeft(shape, Position.X);
Canvas.SetBottom(shape, Position.Y);
canvas.Children.Add(shape);
var transform = shape.TransformToVisual(canvas);
Point absolutePosition = transform.Transform(new Point(0, 0));
无论我传递什么transform.Transform
我都会在输出中得到它。
问题是你改变了你的布局,目前它还没有被评估和测量。只有在评估和测量布局后,才应应用"转换"。
请尝试改用TranslatePoint
。
Point positionOnGrid = shape.TranslatePoint(new Point(0, 0), grid);
或者尝试在canvas.Children.Add(shape);
之后和呼叫TransformToVisual
之前呼叫UpdateLayout
。