我有一个具有以下基本结构的 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 溢出,我最终在 ScrollViewer 上方看到 StackPanel 的部分内容。知道可能导致此问题的原因吗?如果您需要更多详细信息,请告诉我,我会适当地编辑问题。
编辑:添加了一个更好地解释问题的图像:上面是开始滚动之前控件的外观,下面是项目溢出滚动查看器的问题。至于代码,在面板中插入项目没有什么特别的,它基本上在以下行中:
Dim nRow As New Grid
' Insertion of subcontrols within nRow
_Panel.Children.Add(nRow)
这是因为稍后在堆栈面板中添加的项目数量不会更新滚动条的高度,滚动条位于其外部,仅指堆栈面板的原始大小你可以解决为福洛宁:
[编辑] 为堆栈面板指定要显示的滚动的相对或绝对大小。
像这样:
<Grid Name="GridContent" Height="XXX" >
<StackPanel Height="{Binding ActualHeight, ElementName=GridContent}"
Orientation="Vertical"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True">
</StackPanel>
</Grid>