2010-12-03 15 views
1

私は別のシルバーライトコントロールc2を含むシルバーコントロールc1を持っています。
以下のコードを実行しようとしているとき。ネストされたコントロール+上部、左のプロパティ

c1.c2.GetValue(Canvas.LeftProperty) 
c1.c2.GetValue(Canvas.TopProperty) 

結果は、私がメインのキャンバスに比べて内部制御のためのトップとLeftプロパティを取得できますか常に0 です。

+0

私が正しくあなたを理解している場合、c1ははい、いくつかのキャンバスの子ですか? –

+0

はい、キャンバスにc1が追加されました。 –

+0

より多くのコンテキストと 'c1'と' c2'がどのようにキャンバスに追加されるのかを表示できますか? – ChrisF

答えて

1

次の操作を行うことができます

var transform = c2.TransformToVisual(c1); 
var relativePoint = transform.Transform(new Point(0, 0)); 
var c2left = c1.GetValue(Canvas.LeftProperty) + relativePoint.X 
var c2top = c1.GetValue(Canvas.TopProperty) + relativePoint.Y 
+1

+1ですが、私は 'c2.TransformToVisual(c1.Parent)'を使い、最後の2行の式を気にしません。 – AnthonyWJones

+0

@AnthonyWJones:nice idea、thanks) –

関連する問題