我正在尝试使用该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
and InvalidateArrange
(在 Image 元素和页面上),但没有帮助(我不知道这些调用是否与 有任何联系TransformToVisual
)。
可能是什么问题呢?
更新:如果我将手机锁定然后解锁,则不会发生上述问题。
UPDATE2:如果图像位于页面的中心,该位置似乎是图像的左上角。(图像的大小固定为 170x260。我得到坐标 155,255。2*155 + 170 = 480, 2*255 + 260 = 770(好吧,第二个不完全是 800,但无论如何它是可疑的。应用程序栏和系统托盘都是隐藏的。))
UPDATE3:问题出现在我的应用程序的主页上。但是,如果我导航到另一个页面,然后返回主页,它也可以正常工作。