WPF - ScrollViewer内容溢出

时间:2017-11-16 15:17:21

标签: .net wpf

我有一个基本结构的WPF控件:

<Grid>
    <ScrollViewer x:Name="_Scroll" Grid.Row="4" Grid.RowSpan="20" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" CanContentScroll="True" >
        <StackPanel x:Name="_Panel" />
    </ScrollViewer>
</Grid>

稍后在执行期间将一些Grid项添加到_Panel,从而生成垂直对齐的项列表。当滚动条不可见时,这一切都能正常工作,但当我实际需要滚动内容时,StackPanel会溢出,我最终会看到StackPanel内容的一部分上面 ScrollViewer。有什么可能导致这个问题的想法?如果您需要更多详细信息,请告诉我,我会正确编辑问题。

编辑Added an image explaining the issue better:上面是控件在开始滚动之前的样子,下面是ScrollViewer上溢出的项目的问题。至于代码,在面板中插入项目并没有什么特别之处,它基本上属于以下几行:

Dim nRow As New Grid
' Insertion of subcontrols within nRow
_Panel.Children.Add(nRow)

1 个答案:

答案 0 :(得分:1)

这是因为稍后在堆栈面板中添加的项目数量不会更新滚动条的高度(它是外部的),并且仅指向stackpanel的原始大小 你可以解决如下:

[编辑]为您的堆栈面板提供相对或绝对大小,以便显示滚动条。

类似的东西:

<Grid Name="GridContent" Height="XXX" >
    <StackPanel Height="{Binding ActualHeight, ElementName=GridContent}"
                Orientation="Vertical" 
                ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
                ScrollViewer.VerticalScrollBarVisibility="Auto" 
                ScrollViewer.CanContentScroll="True">

    </StackPanel>
</Grid>