114 votes

Comment ajouter un ScrollBar à un Stackpanel

Dans mon application WPF, j'ai un Stackpanel contenant plusieurs contrôles à l'intérieur. Comment puis-je ajouter une barre de défilement à cette pile.

180voto

Joey Points 148544

Mettez-le dans un ScrollViewer .

108voto

biju Points 7193

Stackpanel n'a pas de mécanisme de défilement intégré, mais vous pouvez toujours envelopper le StackPanel dans un ScrollViewer

 <ScrollViewer VerticalScrollBarVisibility="Auto">
  <StackPanel ... />
</ScrollViewer>
 

13voto

arnisz Points 71

Cela fonctionne comme ceci:

 <ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled" Width="340" HorizontalAlignment="Left" Margin="12,0,0,0">
        <StackPanel Name="stackPanel1" Width="311">

        </StackPanel>
</ScrollViewer>
 

         TextBox tb = new TextBox();
        tb.TextChanged += new TextChangedEventHandler(TextBox_TextChanged);
        stackPanel1.Children.Add(tb);
 

-3voto

Freakishly Points 428

Si vous voulez dire, vous voulez faire défiler plusieurs éléments dans votre stackpanel, essayez de mettre une grille autour. Par définition, un stackpanel a une longueur infinie.

Alors essayez quelque chose comme ça:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <StackPanel Width="311">
              <TextBlock Text="{Binding A}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontStretch="Condensed" FontSize="28" />
              <TextBlock Text="{Binding B}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
        </StackPanel>
    </Grid>
 

Vous pouvez même faire fonctionner cela avec un ScrollViewer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X