【发布时间】:2012-12-12 14:34:10
【问题描述】:
WPF 应用程序由任意大小的统一网格组成。网格中的每个单元格都包含一个画布。每个画布都是拖放操作的目标。
当我拖动另一个画布并将其放到网格内的画布上时,我希望拖动的画布(源)和目标画布的左上角对齐,基本上将源放在目标的顶部。我正在寻找的行为是对齐网格效果。
目前,当我使用 element.GetValue(Canvas.LeftProperty) 时,结果为 NaN。问题是确定网格内画布的角位置,但相对于整个窗口。我更喜欢使用网格,因为它会随着窗口大小自动调整大小。
即使网格大小发生变化,是否也可以获取网格内画布的实际位置,或者指定要与网格内的另一个画布对齐的画布?
【问题讨论】:
-
试试
Point p = yourCanvas.TranslatePoint(new Point(0, 0), Window.GetWindow(yourCanvas)); -
你应该可以通过TransformToAncestor得到相对位置。