在Canvas中找到UIElement的X / Y.

时间:2015-01-26 12:25:19

标签: c# wpf canvas uielement

我在画布中有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我输出的是什么。

1 个答案:

答案 0 :(得分:0)

问题是你改变了你的布局,目前尚未对其进行评估和测量。 "变换"只有在评估和测量布局后才能应用。

请尝试使用TranslatePoint

Point positionOnGrid = shape.TranslatePoint(new Point(0, 0), grid);

或尝试在canvas.Children.Add(shape);之后和致电TransformToVisual之前致电UpdateLayout