如何添加一个ScrollBar到一个Stackpanel

在我的WPF应用程序中,我有一个包含多个控件的Stackpanel。 我如何添加一个滚动条到这个堆栈面板。

把它放进一个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> 

如果你的意思是,你想在你的堆栈面板中的多个项目滚动,尝试围绕它的网格。 根据定义,堆栈面板具有无限长度。

所以试试这样的事情:

  <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做这个工作