拖动后获取画布子元素的位置。

时间:2012-07-03 19:21:41

标签: c# wpf drag-and-drop

我有一个Canvas有几个孩子,每个孩子都有一个MouseDragElementBehavior。像这样:

MouseDragElementBehavior drag = new MouseDragElementBehavior();
drag.Attach(ellipse);

我想拖动一个孩子并在拖动后获得该孩子的新位置,所以我做了这样的事情:

double left = Canvas.GetLeft(ellipse);
double top  = Canvas.GetTop(ellipse);

问题是我在拖动后总是得到相同的顶部和左边的值,好像该元素从未被拖动过一样。 我怎样才能获得元素的新位置?

1 个答案:

答案 0 :(得分:0)

我找不到有关此行为实际如何工作的任何有用文档,但我猜它通过设置Margin而不是Canvas.Left / .Top来“移动”控件。你检查了边距,看看它们是否在变化?设置边距会更有用,因为它会扩展与Canvas之外的容器(例如Grid或StackPanel)的兼容性。