2009-05-22 13 views
2

J'utilise un WrapPanel pour mettre en forme du texte. Pendant l'exécution, j'ajoute TextBlocks et StackPanels comme enfants. Évidemment, j'ai besoin d'une barre de défilement en fonction de la taille des données. En cherchant sur le web j'ai trouvé plusieurs réponses qui proposent toutes de mettre un ScrollViewer autour du WrapPanel. Cela a du sens pour moi, mais je n'arrive pas à le faire fonctionner. Voici mon code:Silverlight: impossible de faire fonctionner ensemble ScrollViewer et WrapPanel

scrollView = new ScrollViewer(); 
scrollView.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled; 
scrollView.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; 
scrollView.HorizontalAlignment = HorizontalAlignment.Stretch; 
scrollView.VerticalAlignment = VerticalAlignment.Stretch; 
scrollView.Margin = new Thickness(0); 
scrollView.BorderThickness = new Thickness(0); 

textPanel = new WrapPanel(); 
textPanel.Width = Width; 
scrollView.Content = textPanel; 

Cela ne fonctionne pas. Le ScrollViewer semble grandir avec le WrapPanel contenu. Si je place la barre de défilement verticale à visible, je peux voir que la barre de défilement se développe avec le contenu. Mais le ScrollViewer se développe hors de la fenêtre contenant et par conséquent aucune barre de défilement n'est jamais affichée.

Une allusion à ce que je pourrais faire de mal?

acclamations, Achim

Répondre

3

Vous devez quelque chose à contrain la taille du WrapPanel et ScrollViewer - vous pouvez définir la largeur et la hauteur du spectateur puis utiliser un élément de liaison sur la WrapPanel:

<ScrollViewer x:Name="ScrollViewer1" 
Width="200" 
Height="200" 
ScrollViewer.VerticalScrollBarVisibility="Visible" 
    ScrollViewer.HorizontalScrollBarVisibility="Visible" > 
       <controls:WrapPanel 
         Width="{Binding ElementName=ScrollViewer1, Path=Width}" 
         Height="{Binding ElementName=ScrollViewer1, Path=Height}"> 

Espérons que cela aide.

Ian

+0

Oui, c'était probablement le problème. J'ai déplacé le ScrollViewer dans une grille - qui semble restreindre la taille - et tout a fonctionné avec une amende. Merci pour votre réponse! – Achim