我有一个ListBox,当我在该ListBox中选择一个项目时,我想复制该图像并将其放在包含我的应用程序中所有其他对象的Canvas上。这在大多数情况下都可以正常工作,但是如果ListBox中的项目更进一步,那么我必须滚动才能看到该项,坐标不再准确。
是否有Canvas.getGlobalPosition(UIElement)这样的函数,它允许我设置Canvas.SetTop(uiElement,globalCoordinateSpace.Y)并允许我将一个图像直接放在另一个图像上,无论在哪里它位于ListBox中?
感谢。
答案 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
上调用上述代码来获得确切的屏幕位置。