【发布时间】:2020-08-14 05:37:56
【问题描述】:
如果 a 有 Canvas 父级,则很容易获得子级的位置:
Canvas.GetLeft/Top (child)
但是我怎样才能为其他类型的父母获得孩子的位置呢?
【问题讨论】:
标签: wpf
如果 a 有 Canvas 父级,则很容易获得子级的位置:
Canvas.GetLeft/Top (child)
但是我怎样才能为其他类型的父母获得孩子的位置呢?
【问题讨论】:
标签: wpf
可以使用控件的TranslatePoint方法来完成。
UIElement container = VisualTreeHelper.GetParent(control) as UIElement;
Point relativeLocation = control.TranslatePoint(new Point(0, 0), container);
new Point(0, 0) 表示控件的左上角,TranslatePoint 将返回该点相对于父控件的位置(我假设这里的父控件是UIElement)。
您可以放置控件的任何祖先而不是 容器。
【讨论】:
Point 有一个无参数构造函数,如果有人想保存这几个字符,它的初始化值与new Point(0,0) 相同。
TranslatePoint 将返回该点相对于目标元素的位置,在此示例中为容器。
default 而不是 new Point(0,0)。