我在画布中有UIElements(圆形/矩形)。我想获得相对于其父(Canvas)的UIElement的X / Y.但是我无法得到它。
有一些解决方案。我试过这个(Find position of Button/UIElement on screen relative to grid Windows Phone)
var transform = button.TransformToVisual(grid);
Point absolutePosition = transform.Transform(new Point(0, 0));
但我在absolutePosition中获得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
我输出的是什么。
答案 0 :(得分:0)
问题是你改变了你的布局,目前尚未对其进行评估和测量。 "变换"只有在评估和测量布局后才能应用。
请尝试使用TranslatePoint
。
Point positionOnGrid = shape.TranslatePoint(new Point(0, 0), grid);
或尝试在canvas.Children.Add(shape);
之后和致电TransformToVisual
之前致电UpdateLayout
。