2012-04-14 42 views
0

我有一個網格(容器),而這又有幾個網格(subContainers)按行排列。這些「子容器」中的每一個都有不同的列和控件。而這些「subContainers」中的每一個都將水平對齊設置爲伸展,並且必須保持這種方式,因爲此查看器依賴於它的佈局。Silverlight水平拉伸和獲取位置問題

我使用「容器」來設置每個控件的位置。到現在爲止還挺好。現在我的頭痛......我想從網格中刪除控件,並將其放在畫布中,只在同一個確切的位置,它返回的位置就好像控件設置爲網格的開始而不是這是真實的位置。 出於測試目的,我將「subContainters」水平對齊設置爲居中,並且(儘管佈局完全錯誤),每個控件在發送到畫布時都處於正確的位置,當HA =拉伸時它不會發生。 下面是我用得到的位置代碼:

GeneralTransform gt = nc.TransformToVisual(gridZoom); 
Point offset = gt.Transform(new Point()); 

所以你可以理解,例如,我的第一控制應該是這樣的(80,1090)的地方,但我得到的點(3, 3)。

任何人都可以幫助我嗎?謝謝

回答

0

您應該嘗試使用頂級容器(其中包含所有其他子容器)來獲得偏移點。

你也可以試試:

var transform = mySubSubSubElement.TransformToVisual(Application.Current.RootVisual); 
var position = transform.Transform(new Point(0, 0)); 
+0

你是什麼意思?你的意思是:「GeneralTransform gt = nc.TransformToVisual(Container);」 ???我已經嘗試,以及相同的結果,偏移返回(3,3):( – David 2012-04-14 13:17:06

+0

然後嘗試(我已經發布了上面相同的代碼): var transform = mySubSubSubElement.TransformToVisual(Application.Current .RootVisual); var position = transform.Transform(new Point(0,0)); – 2012-04-14 13:39:38

+0

謝謝。它的工作幾乎完美:P,唯一的事情,因爲子元素不在(0,0)點控制,我不得不減去抵消點和VOILA的差異:DDD它看起來很棒非常感謝:D – David 2012-04-14 14:35:03