如何将ScrollBar添加到Stackpanel

时间:2011-06-06 09:48:04

标签: c# wpf xaml stackpanel scrollbars

在我的WPF应用程序中,我有一个Stackpanel,里面有几个控件。如何将滚动条添加到此堆栈面板。

5 个答案:

答案 0 :(得分:141)

将其放入ScrollViewer

答案 1 :(得分:87)

Stackpanel没有内置的滚动机制,但您始终可以将StackPanel包装在ScrollViewer中

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

答案 2 :(得分:9)

它的工作原理如下:

<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);

答案 3 :(得分:2)

对于水平方向的StackPanel,明确地将两个滚动条可见性用于获取水平滚动条。

    <ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
        <StackPanel Orientation="Horizontal" />
    </ScrollViewer>

答案 4 :(得分:-4)

如果您的意思是,您想要滚动浏览堆叠面板中的多个项目,请尝试在其周围放置一个网格。根据定义,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

进行此操作