2012-07-03 57 views
2

我有一个Canvas与几个孩子,每个孩子有一个MouseDragElementBehavior附。事情是这样的:拖动后获取画布子元素的位置。

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

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

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

的问题是,我总是得到拖动之后顶部和左侧的值相同,就好像该元素从未被拖动过一样。 我如何获得元素的新位置?

回答

0

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

+0

我会检查一下cyborg37。 – canha

+0

@JDB,没有利润率完好无损。如果父元素是'Canvas',那么页边距就是'0,0,0,0',当父元素是常规'Grid'时,边距将始终停留在元素的初始位置,例如。 '边距:102.929,85.605,0,0' ...这个'MouseDragElementBehaviour'很混乱。 –

+0

@DimitryK - 酷。也许你可以发布你发现的任何有用的信息作为单独的答案,以便它可以被识别和upvoted。 – JDB