在画布中查找 UIElement 的 X/Y



我在画布上有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

相关内容

  • 没有找到相关文章

最新更新