2009-04-22 3 views
0

Je ne parviens pas à utiliser la propriété SetTop Canvas dans l'application Silverlight. Voici le code minimal pour reproduire le problèmeProblème avec SetTop dans l'application Silverlight WPF

from System import TimeSpan 
from System.Windows import Application, Duration, PropertyPath 
from System.Windows.Controls import Canvas, TextBlock 
from System.Windows.Media import SolidColorBrush, Colors 
from System.Windows.Media.Animation import (
    DoubleAnimation, Storyboard, RepeatBehavior 
) 

root = Canvas() 

root.Children.Clear() 
root.Resources.Clear() 
#root.Background = SolidColorBrush(Colors.Black) 

parent = Canvas(Width = 100, Height = 100) 
parent.Background = SolidColorBrush(Colors.Black) 
parent.SetTop(root, 0) 
parent.SetLeft(root, 0) 

parent2 = Canvas(Width = 100, Height = 100) 
parent2.Background = SolidColorBrush(Colors.Blue) 
parent2.SetTop(root, 100) 

root.Children.Add(parent) 

Application.Current.RootVisual = root 

La ligne "parent2.SetTop (racine, 100)" modifie la position où Parent1 sera affiché.

Ce comportement est surprenant. Je ne suis même pas en train d'ajouter parent2 comme l'un des objets enfants, mais cela affecte la mise en page. Est-ce que quelqu'un peut expliquer ce que je fais mal?

Répondre

3

Je pense que vous utilisez SetTop "en arrière". SetTop définit la propriété attachée sur un contrôle enfant du fait de toile si ceci:

parent2.SetTop(root,100) 

Définit la propriété Canvas.Top de racine à 100 (non parent2) (donc se déplacera donc tous les enfants de root aussi). Ce que vous devez faire est:

root.SetTop(parent, 0) 

qui définira la propriété Canvas.Top de parent à 0.

Plus d'info sur MSDN.

+0

Merci beaucoup. Il est surprenant de voir comment de si petites choses peuvent causer une grande frustration. Merci encore. – Manish

+0

Pas de soucis - les propriétés attachées peuvent être quelque peu déroutantes :-) –