2012-07-03 125 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