如何将ScrollBar添加到Stackpanel


Answers:


162

把它放进去ScrollViewer


谢谢。将ScrollViewer放在其周围后,不会显示全部内容。我尝试将“高度”和“宽度”设置为“自动”,但是没有运气。为什么只显示有限的一部分?
Shamim Hafiz

5
我没有线索。您的问题有两个句子长,这对于预测任何潜在的问题有点细节。
乔伊,

知道了,我将开始标签放在错误的位置。非常感谢您的帮助。
Shamim Hafiz

简单而完美的答案。

94

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

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

3
好吧,StackPanel确实实现IScrollInfo并提供了许多与滚动相关的方法。您确定它没有任何“内置”滚动机制吗?
OR Mapper

4
来自msdn.microsoft.com/zh-cn/library/… ...“此属性不适用于您的代码。该属性公开公开以履行接口合同(IScrollInfo)。设置此属性无效。如果您需要物理滚动而不是逻辑滚动,请将StackPanel包裹在ScrollViewer中,并将其CanContentScroll属性设置为false。”
斯金纳

11

它是这样的:

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

0

对于水平放置的StackPanel,显式放置两个滚动条可见性对我来说都可以得到水平滚动条。

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

1
重复先前的答案。
vapcguy

-4

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

所以尝试这样的事情:

   <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使其工作


4
这段代码是脱离上下文的。您能否删除依赖关系,以便代码无需进一步修改即可使用?
Markus Jarderot 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.