Nella mia applicazione WPF, ho uno Stackpanel contenente diversi controlli al loro interno. Come posso aggiungere una barra di scorrimento a questo stackpanel.
Nella mia applicazione WPF, ho uno Stackpanel contenente diversi controlli al loro interno. Come posso aggiungere una barra di scorrimento a questo stackpanel.
Risposte:
Mettilo in un file ScrollViewer
.
Stackpanel non ha un meccanismo di scorrimento integrato, ma puoi sempre avvolgere StackPanel in uno ScrollViewer
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel ... />
</ScrollViewer>
StackPanel
implementa IScrollInfo
e offre una serie di metodi relativi allo scorrimento. Sei sicuro che non abbia alcun tipo di meccanismo di scorrimento "integrato"?
Funziona così:
<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);
Per StackPanel orientato orizzontalmente, l'inserimento esplicito di entrambe le visibilità della barra di scorrimento ha funzionato per me per ottenere la barra di scorrimento orizzontale.
<ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
<StackPanel Orientation="Horizontal" />
</ScrollViewer>
Se intendi scorrere più elementi nel tuo stackpanel, prova a mettere una griglia attorno ad esso. Per definizione, uno stackpanel ha una lunghezza infinita.
Quindi prova qualcosa di simile:
<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>
Potresti persino farlo funzionare con uno ScrollViewer