2012-04-14 8 views
0

グリッド(コンテナ)には複数のグリッド(サブコンテナ)が並んでいます。これらの「サブコンテナ」にはそれぞれ異なる列とコントロールがあります。これらの「サブコンテナ」のそれぞれは、水平方向の配置が伸びるように設定されています。このビューアはレイアウトに依存しているため、そのままにしておく必要があります。Silverlightの水平方向のストレッチと取得位置の問題

「コンテナ」を使用して、適切な位置に各コントロールを設定します。ここまでは順調ですね。今私の頭痛が来る...私はグリッドからコントロールを削除し、同じ正確な位置で、キャンバスに入れたいだけ、それが返す位置は、コントロールがグリッドの先頭に設定されているかのようですそれは本当の立場です。 テスト目的のために、私は "subContainters"の水平方向の配置を中央に設定しています(レイアウトは全く間違っていますが)HA =ストレッチ時には起こらないキャンバスに送信されると、 ここで私は位置を取得するために使用しているコードです:だからあなたが理解することができ、例えば、私の最初のコントロールがどこか(80、1090)のようにする必要があります

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

が、私が得るポイントは、(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

+0

)を試してみてください。上記の同じコードを投稿してみてください。 var transform = mySubSubSubElement.TransformToVisual(Application.Current (0,0)); –

+0

ありがとうございました。サブ要素が(0,0)の点にないため、ほぼ完璧に動作しました。コントロール、私はオフセットポイントとVOILAの違いを引く必要があった:DDDそれは大変ありがとう:D – David

関連する問題