1

StackPanelN 個の子を持つ があります。親に対する子のx、y座標を取得したいStackPanel

の子はStackPanel水平方向に中央に配置されるため、StackPanelサイズが変更されるたびに子が中央に配置されます。を基準にして子項目の左上隅を取得するために私がやっていることは次のとおりですStackPanel

Dim parent = VisualTreeHelper.GetParent(childItem)
childItem.TranslatePoint(VisualTreeHelper.GetDescendantBounds(childItem).TopLeft, parent)

初期レイアウトで返されるポイントが (20,0) だとしましょう。レイアウトが変更されてStackPanel幅が広がりますが、子は中央に配置されたままです。このメソッドが (150, 0) のような値を返すことを期待していますが、それでも (20,0) が返されます。アイテムが の中心にあることが視覚的にわかりますが、StackPanelまだ初期座標が表示されています。私は何を間違っていますか?

4

2 に答える 2

1

TranslatePoint 関数に new Point(0,0) を渡す必要があると思います。子は座標空間内の点を別のビジュアルに変換しているため、左上隅は (0,0) です。

于 2009-08-07T19:56:42.913 に答える
0

FindAncestors.FindAncestorが何をするのかわからないので推測しますが、コンテナの水平方向のコンテンツではなく、アイテムのコンテナを返すと推測しています。コンテナではなく、コンテンツの左上の座標が必要です。

于 2009-08-07T18:36:48.177 に答える