我的页面左边有一个垂直StackPanel,其中包含以下元素:
- 1个TextBlock
- 1个垂直StackPanel,其中包含多个元素并填充了可用空间
我试图使用ScrollViewer元素使第二个StackPanel可滚动,但没有成功。 如果我将ScrollViewer高度定义为某个值,它会起作用,但我不想这样做,因为我希望它填充所有可用的垂直空间。
我想在代码中应用ScrollViewer高度,读取StackPanel计算出的高度,但这似乎不是正确的方法。 我还尝试将Height和ActualHeight绑定到StackPanel Height属性,但没有结果。
<ScrollViewer
Grid.Row="1"
VerticalAlignment="Top"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollMode="Enabled"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.ZoomMode="Disabled">
<StackPanel x:Name="sptest" Orientation="Vertical">
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test1</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test2</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test3</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test4</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test5</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test6</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test7</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test8</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test9</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test10</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test11</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test12</TextBlock>
</StackPanel>
</ScrollViewer>
除此之外,我还有一个填充水平可用空间的GridView,并且当需要时它会自动出现滚动条。我没有定义它,只有在必要时才会出现。很奇怪,StackPanel表现不符合我的期望。我做错了什么?
编辑
我发现了这个 SO question。它是关于 WPF 而不是 WinRT 但可能是同样的问题。它说:
“您无法在不固定 StackPanel 高度的情况下实现此目标。它被设计为在一个方向上无限增长。我建议使用不同的面板。”
我将我的 StackPanel 更改为 Grid(因为我只想要一列,所以我不想这样做),但 ScrollViewer 也不起作用。