【发布时间】:2015-01-26 12:25:18
【问题描述】:
我在画布中有 UIElements(圆形/矩形)。我想获得相对于其父级(画布)的 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 中传递什么,我都会在输出中得到它。
【问题讨论】:
-
Canvas 附加属性(上、左、下、右)是否不合适?它们控制 Canvas 子元素的 X/Y 位置。
-
后来我使用了 Canvas.GetLeft。他们工作正常。我在stackoverflow上进行了搜索,唯一能找到的解决方案就是这个(转换)。所以我想知道为什么它对我不起作用,
-
你试过@Arie 的回答吗?环顾四周,似乎
TranslatePoint是首选方法。只需将他/她示例中对grid的引用替换为对您的画布的引用即可。