usercontrol中的WPF Scrollviewer不显示垂直滚动条

时间:2014-01-02 18:08:48

标签: c# .net wpf silverlight prism

我正在使用PRISM架构。

我的结构如下

<Window Height="300" Width="300">
  <Grid>
    <ItemsControl>

      <UserControl>
        <ScrollViewer>
          <StackPanel>
          </StackPanel>
        </ScrollViewer>
       </UserControl>

     </ItemsControl>
  </Grid>
</Window>

水平滚动条显示但垂直不显示。

请注意,如下所示将stackpanel更改为网格无济于事。

          <UserControl>
            <ScrollViewer>
              <Grid>
                <StackPanel>
                </StackPanel>
              </Grid>
            </ScrollViewer>
          </UserControl>

2 个答案:

答案 0 :(得分:4)

ScrollViewer放在Grid内。这有助于ScrollViewer使用Grid中的可用空间,如果内容溢出,则会显示滚动条。这取决于您使用UserControl的位置。确保此UserControl未放置在ScrollViewer或任何可滚动控件内。

      <UserControl>
        <Grid>
          <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <StackPanel>
            </StackPanel>
          </ScrollViewer>
        </Grid>
      </UserControl>

答案 1 :(得分:1)

StackPanel无限期地增长(即高度不受限制,直到您明确设置为止)。

使用另一个面板 Grid,DockPanel 等或限制StackPanel的修复高度。

<ScrollViewer>
    <DockPanel>
    </DockPanel>
</ScrollViewer>

OR

<ScrollViewer>
    <StackPanel Height="300">
    </StackPanel>
</ScrollViewer>

你也可以这样约束身高:

<StackPanel Height="{Binding ActualHeight,
      RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>