我有一个StackPanel
,有N个孩子。我想得到孩子相对于父StackPanel
的x,y坐标。
StackPanel
中的孩子水平居中,因此只要StackPanel
调整大小,孩子就会居中。这是我正在做的事情,以获得相对于StackPanel
的子项的TopLeft角:
Dim parent = VisualTreeHelper.GetParent(childItem)
childItem.TranslatePoint(VisualTreeHelper.GetDescendantBounds(childItem).TopLeft, parent)
让我们说在初始布局中它给我回来的点是(20,0)。现在布局发生了变化,StackPanel
变宽了,但是孩子们仍然居中。我希望这个方法现在给我一些回复(150,0),但它仍然给我(20,0)。在视觉上我可以看到项目位于StackPanel
的中心,但它仍然给我初始坐标。我做错了什么?
答案 0 :(得分:1)
我认为你需要将新的Point(0,0)传递给TranslatePoint函数。由于孩子将其坐标空间中的一个点转换为另一个视觉,因此其左上角为(0,0)。
答案 1 :(得分:0)
猜测是因为我不知道FindAncestors.FindAncestor做了什么,但我猜它会返回项目的容器,而不是水平居中的内容容器。您需要内容的左上角坐标,而不是容器。