查找与其他Canvas相关的图形对象的确切位置

时间:2012-02-07 15:40:16

标签: c# windows-phone-7.1 windows-phone-7

我有一个ListBox,当我在该ListBox中选择一个项目时,我想复制该图像并将其放在包含我的应用程序中所有其他对象的Canvas上。这在大多数情况下都可以正常工作,但是如果ListBox中的项目更进一步,那么我必须滚动才能看到该项,坐标不再准确。

是否有Canvas.getGlobalPosition(UIElement)这样的函数,它允许我设置Canvas.SetTop(uiElement,globalCoordinateSpace.Y)并允许我将一个图像直接放在另一个图像上,无论在哪里它位于ListBox中?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用方法TransformToVisual创建转换,以便您确定一个元素相对于另一个元素的位置。

我经常使用以下扩展方法来确定两个UIElements的相对位置:

    /// <summary>
    /// Gets the relative position of the given UIElement to this.
    /// </summary>
    public static Point GetRelativePosition(this UIElement element, UIElement other)
    {
        return element.TransformToVisual(other)
                      .Transform(new Point(0, 0));
    }

您可以通过在Application.Current.RootFrame上调用上述代码来获得确切的屏幕位置。