【问题标题】:How to add a ScrollBar to a Stackpanel如何将滚动条添加到堆栈面板
【发布时间】:2018-05-24 02:10:40
【问题描述】:

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

【问题讨论】:

    标签: c# wpf xaml stackpanel scrollbars


    【解决方案1】:

    将其放入ScrollViewer

    【讨论】:

    • 谢谢。在它周围放置一个 ScrollViewer 后,整个内容都不会显示出来。我尝试将高度和宽度设置为自动,但没有运气。为什么只显示有限的部分?
    • 我不知道。您的问题有两句话长,对于预测任何潜在问题来说有点细节。
    • 知道了,我把开始标签放错了地方。非常感谢您的帮助。
    • 简单完美的答案。
    【解决方案2】:

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

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

    【讨论】:

    • 好吧,StackPanel 确实实现了IScrollInfo 并提供了许多与滚动相关的方法。你确定它没有任何“内置”滚动机制吗?
    • from msdn.microsoft.com/en-us/library/…... "此属性不打算在您的代码中使用。它公开公开以履行接口协定 (IScrollInfo)。设置此属性无效。如果您需要物理滚动而不是逻辑滚动,将 StackPanel 包装在 ScrollViewer 中并将其 CanContentScroll 属性设置为 false。"
    【解决方案3】:

    它是这样工作的:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 重复之前的答案。
      【解决方案5】:

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

      所以试试这样的:

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

      【讨论】:

      • 这段代码是断章取义的。您能否删除依赖项,使代码无需进一步修改即可使用?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      • 2014-04-05
      • 2017-09-15
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多