Как добавить полосу прокрутки в Stackpanel
в моем приложении WPF у меня есть Stackpanel, содержащий несколько элементов управления внутри них. Как я могу добавить полосу прокрутки к этой stackpanel.
5 ответов:
положите его в
ScrollViewer
.
Stackpanel не имеет встроенного механизма прокрутки, но вы всегда можете обернуть StackPanel в ScrollViewer
<ScrollViewer VerticalScrollBarVisibility="Auto"> <StackPanel ... /> </ScrollViewer>
это работает так:
<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);
для горизонтально ориентированной StackPanel, явно помещая обе видимости полосы прокрутки работал для меня, чтобы получить горизонтальную полосу прокрутки.
<ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" > <StackPanel Orientation="Horizontal" /> </ScrollViewer>
Если вы хотите прокрутить несколько элементов в stackpanel, попробуйте поместить вокруг него сетку. По определению, stackpanel имеет бесконечную длину.
Так что попробуйте что-то вроде этого:
<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>
вы даже можете сделать эту работу с ScrollViewer