120

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

4

5 回答 5

186

将其放入一个ScrollViewer.

于 2011-06-06T09:51:24.640 回答
116

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

<ScrollViewer VerticalScrollBarVisibility="Auto">
  <StackPanel ... />
</ScrollViewer>
于 2011-06-06T09:52:24.960 回答
13

它是这样工作的:

<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);
于 2012-07-29T00:33:01.747 回答
0

对于水平方向的 StackPanel,显式地放置滚动条的可见性对我来说是为了获得水平滚动条。

    <ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
        <StackPanel Orientation="Horizontal" />
    </ScrollViewer>
于 2015-11-05T03:01:55.937 回答
-3

如果您的意思是,您想滚动浏览堆栈面板中的多个项目,请尝试在其周围放置一个网格。根据定义,堆栈面板的长度是无限的。

所以尝试这样的事情:

   <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 来完成这项工作

于 2011-06-06T09:54:32.497 回答