我正在尝试使用TransformToVisual
方法获取Image元素的绝对坐标,如下所示:
var transform = img.TransformToVisual( this ); // this is the current page
Point absolutePosition = transform.Transform( new Point(0, 0) );
我第一次使用它时,此代码返回的值不正确(总是155,255)。但是,它总是会在之后返回正确的坐标。
此代码在Tap事件处理程序中运行,因此UI在执行时已经完全呈现。我尝试调用InvalidateMeasure
和InvalidateArrange
(同时在Image元素和页面上),但它没有帮助(我不知道这些调用是否与TransformToVisual
有任何关联)。
可能是什么问题?
更新:如果我锁定我的手机然后解锁它,那么上述问题就不会发生。
UPDATE2:如果 位于页面中心,则位置似乎是 的左上角。 (图像的大小固定为170x260。我得到坐标155,255.2 * 155 + 170 = 480,2 * 255 + 260 = 770(好吧第二个不完全是800,但无论如何它都是可疑的。应用程序栏和系统托盘都是隐藏的。))
UPDATE3:问题发生在我的应用的主页上。但是,如果我导航到另一个页面,然后返回主页面,它也可以正常工作。