Silverlight水平拉伸和获取位置问题

Silverlight水平拉伸和获取位置问题,silverlight,grid,position,alignment,Silverlight,Grid,Position,Alignment,我有一个网格(容器),其中依次有几行排列的网格(子容器)。每个“分包商”都有不同的列和控件。每个“子容器”的水平对齐设置为拉伸,并且必须保持这种方式,因为这个查看器依赖于它的布局 我使用“容器”将每个控件设置在适当的位置。到现在为止,一直都还不错。现在我的头痛来了。。。我想将控件从网格中移除,并将其放在画布中,仅在相同的精确位置,它返回的位置就像控件被设置为网格的边界,而不是它的真实位置。 出于测试目的,我将“subContainters”水平对齐设置为居中,并且(尽管布局完全错误)每个控件在发

我有一个网格(容器),其中依次有几行排列的网格(子容器)。每个“分包商”都有不同的列和控件。每个“子容器”的水平对齐设置为拉伸,并且必须保持这种方式,因为这个查看器依赖于它的布局

我使用“容器”将每个控件设置在适当的位置。到现在为止,一直都还不错。现在我的头痛来了。。。我想将控件从网格中移除,并将其放在画布中,仅在相同的精确位置,它返回的位置就像控件被设置为网格的边界,而不是它的真实位置。 出于测试目的,我将“subContainters”水平对齐设置为居中,并且(尽管布局完全错误)每个控件在发送到画布时都处于正确的位置,而HA=拉伸时不会发生这种情况。 下面是我用来获取位置的代码:

GeneralTransform gt = nc.TransformToVisual(gridZoom);
Point offset = gt.Transform(new Point());
例如,您可以理解,我的第一个控件应该是(801090),但我得到的点是(3,3)


有人能帮我吗?谢谢

您应该尝试使用顶级容器(包含所有其他子容器)获取偏移点

您也可以尝试:

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

你什么意思?你是说:“generaltransformgt=nc.TransformToVisual(Container);”???我也尝试过,得到了同样的结果,偏移量返回(3,3):(然后尝试(我也发布了上面相同的代码):var transform=mysubsubelement.TransformToVisual(Application.Current.RootVisual);var position=transform.transform(new Point(0,0));谢谢。它工作得几乎完美:P,唯一的东西,因为子元素不在(0,0)点在控制中,我必须减去偏移点的差值,瞧:DDD看起来很棒,非常感谢:D