首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在wpf中获取元素在窗口中的绝对位置

在wpf中获取元素在窗口中的绝对位置
EN

Stack Overflow用户
提问于 2008-12-22 16:57:11
回答 5查看 129.1K关注 0票数 94

当双击某个元素时,我想获得该元素相对于窗口/根元素的绝对位置。元素在其父元素中的相对位置似乎是我所能得到的全部,而我想要得到的是相对于窗口的点。我已经看到了如何在屏幕上获得元素的点的解决方案,但不是在窗口中。

EN

回答 5

Stack Overflow用户

发布于 2013-03-21 08:31:33

要获取UI元素在窗口中的绝对位置,可以使用:

代码语言:javascript
复制
Point position = desiredElement.PointToScreen(new Point(0d, 0d));

如果您在用户控件中,并且只是想要UI元素在该控件中的相对位置,则只需使用:

代码语言:javascript
复制
Point position = desiredElement.PointToScreen(new Point(0d, 0d)),
controlPosition = this.PointToScreen(new Point(0d, 0d));

position.X -= controlPosition.X;
position.Y -= controlPosition.Y;
票数 50
EN

Stack Overflow用户

发布于 2014-01-29 00:59:48

将此方法添加到静态类:

代码语言:javascript
复制
 public static Rect GetAbsolutePlacement(this FrameworkElement element, bool relativeToScreen = false)
    {
        var absolutePos = element.PointToScreen(new System.Windows.Point(0, 0));
        if (relativeToScreen)
        {
            return new Rect(absolutePos.X, absolutePos.Y, element.ActualWidth, element.ActualHeight);
        }
        var posMW = Application.Current.MainWindow.PointToScreen(new System.Windows.Point(0, 0));
        absolutePos = new System.Windows.Point(absolutePos.X - posMW.X, absolutePos.Y - posMW.Y);
        return new Rect(absolutePos.X, absolutePos.Y, element.ActualWidth, element.ActualHeight);
    }

relativeToScreen参数设置为true,以便从整个屏幕的左上角放置,或者设置为false,以便从应用程序窗口的左上角放置。

票数 18
EN

Stack Overflow用户

发布于 2018-07-22 19:44:18

从.NET 3.0开始,您可以简单地使用*yourElement*.TranslatePoint(new Point(0, 0), *theContainerOfYourChoice*)

这将给你的按钮的点0,0,但指向容器。(你也可以给出另外一个点,0,0)

Check here for the doc.

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/386731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档