2010-12-03 7 views
1

J'ai un contrôle silverlight c1 qui contient un autre contrôle silverlight c2.
Lorsque vous essayez d'exécuter le code ci-dessous.Contrôle imbriqué + Haut, propriétés gauche

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

Le résultat est toujours 0. Comment puis-je obtenir le haut et la propriété gauche pour le contrôle interne par rapport à la toile principale.

+0

Si je vous comprends bien alors c1 est un enfant de quelques toile, oui? –

+0

oui à droite, c1 est ajouté sur la toile. –

+0

Pouvez-vous montrer plus de contexte et comment 'c1' et' c2' sont ajoutés au canevas. – ChrisF

Répondre

1

Vous pouvez effectuer les opérations suivantes:

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, bien que j'utiliser 'c2.TransformToVisual (c1.Parent)' et ne pas déranger avec les expressions des deux dernières lignes. – AnthonyWJones

+0

@AnthonyWJones: bonne idée, merci) –

Questions connexes