2011-06-16 3 views
1

Je souhaite faire un retour à la ligne et afficher une barre de défilement verticale lorsque j'ai plus d'une ligne de texte mais que le texte ne s'enroule pas du tout. ceci est mon xamltextwrapping dans silverlight 4 ne fonctionne pas

<StackPanel Name="panel"> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 

       <StackPanel 
        Grid.Row="0" 
        Grid.Column="0" 
        Orientation="Horizontal" 
        Background="Yellow"> 

       <TextBlock Text="Text:" /> 
       <ScrollViewer          
        BorderThickness="0" 
        Height="33"          
        VerticalScrollBarVisibility="Auto"         
        HorizontalScrollBarVisibility="Disabled">      
        <TextBlock TextWrapping="Wrap" Text="{Binding Name}"/> 
       </ScrollViewer> 
       </StackPanel> 
      </Grid> 
     </StackPanel> 

Quelqu'un peut-il me dire pourquoi le texte ne sera pas envelopper à la fin de l'écran?

Merci

Répondre

3

Ce qui se passe ici est que votre StackPanel interne (et chaque StackPanel) ne contrainte non ses enfants à l'espace « visible » dans le StackPanel. Ainsi, le scrollviewer a l'impression d'avoir un espace illimité, tout comme le bloc de texte. La grille elle-même peut le faire:

<StackPanel Name="panel"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="Text:" /> 
     <ScrollViewer Grid.Column="1" 
            BorderThickness="0" 
            Height="33" 
            VerticalScrollBarVisibility="Auto" 
            HorizontalScrollBarVisibility="Disabled"> 
      <TextBlock TextWrapping="Wrap" 
            Text="YourText" /> 
     </ScrollViewer> 
    </Grid> 
</StackPanel> 
+0

Fonctionne plutôt bien maintenant. Je vais devoir changer quelques choses maintenant. Pouvez-vous également me dire s'il est possible de faire en sorte que le scrollviewer ait la même hauteur qu'une ligne dans une grille afin qu'il affiche la barre de défilement dès qu'il y a plus de texte dans la rangée? Je déteste coder en dur la hauteur dans le scrollviewer. Merci – user642770

+0

Bien sûr ... dans mon exemple de code, comme le ScrollViewer est restreint par la grille (existe un Grid.Row implicite = "0"), le visualiseur de défilement sera élevé (est-ce un mot?) De la hauteur de cette rangée. Donc, tout ce que vous avez à faire est '' – NestorArturo

+0

Malheureusement, cela n'a pas donné les résultats souhaités. J'ai ajouté la hauteur à la ligne comme vous l'avez dit et enlevé la propriété Height du ScrollViewer. Cependant, le scrollviewer semble toujours être coupé par la grille. Je souhaite qu'il y avait un moyen d'attacher une capture d'écran, mais ce que je veux dire est que l'extrémité inférieure de la barre de défilement n'est pas entièrement visible. Je suis seulement capable de voir la moitié de l'extrémité inférieure de la barre de défilement. Je voudrais qu'il s'insère correctement dans la rangée. – user642770

Questions connexes