【问题标题】:How can I get the position of a child element relative to a parent?如何获取子元素相对于父元素的位置?
【发布时间】:2020-08-14 05:37:56
【问题描述】:

如果 a 有 Canvas 父级,则很容易获得子级的位置:

Canvas.GetLeft/Top (child)

但是我怎样才能为其他类型的父母获得孩子的位置呢?

【问题讨论】:

    标签: wpf


    【解决方案1】:

    可以使用控件的TranslatePoint方法来完成。

    UIElement container = VisualTreeHelper.GetParent(control) as UIElement;
    Point relativeLocation = control.TranslatePoint(new Point(0, 0), container);
    

    new Point(0, 0) 表示控件的左上角,TranslatePoint 将返回该点相对于父控件的位置(我假设这里的父控件是UIElement)。
    您可以放置​​控件的任何祖先而不是 容器

    【讨论】:

    • 我不知道 TranslatePoint。非常方便!
    • Point 有一个无参数构造函数,如果有人想保存这几个字符,它的初始化值与new Point(0,0) 相同。
    • TranslatePoint 将返回该点相对于目标元素的位置,在此示例中为容器。
    • 从 C# 7.1 开始,您可以简单地使用 default 而不是 new Point(0,0)
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2018-02-15
    相关资源
    最近更新 更多