如何使StackPanel向一个方向滚动内容?

时间:2014-02-20 18:54:43

标签: wpf wpf-controls

我想要一个滚动条出现在堆栈面板中,当有太多项目无法放入屏幕时,就像ListBox一样。我不能把它放到滚动查看器中,因为在这种情况下,水平StackPanel会停止缩放元素。 ScrollViewer告诉它的内容,它有无限的适合位置,并且项目始终保持其原始大小,ScrollViewer只是裁剪元素,如果高度太小则显示垂直滚动条,如果太大则留下空白空间。 我可能需要对ScrollViewer的MeasureOverride()方法进行一些棘手的覆盖,使其内容适合该面板而不显示垂直滚动条并获取所需的宽度,但到目前为止我的所有尝试都失败了。

1 个答案:

答案 0 :(得分:1)

ScrollViewer.HorizontalScrollBarVisibilityScrollViewer.VerticalScrollbarVisibility的值将决定ScrollViewer中元素的布局行为。

此:

<ScrollViewer VerticalScrollBarVisibility="Disabled" 
              HorizontalScrollBarVisibility="Auto">
   <StackPanel Orientation="Horizontal">
      <!-- ... -->
   </StackPanel>
</ScrollViewer>

将导致在需要时显示水平滚动条,同时垂直拉伸(不是缩放,这是完全不同的)StackPanel内容。