我页面的左侧我有一个垂直的StackPanel,其中包含以下元素:
我正在尝试使用 ScrollViewer 元素制作第二个 StackPanel ,但没有成功。如果我将ScrollViewer Height定义为某个值,它可以工作,但我不想,因为我希望它填充所有可用的垂直空间。
我正在考虑在代码读取StackPanel计算高度时应用ScrollViewer Height,但这似乎不是正确的方法。 我还尝试将高度和 ActualHeight 绑定到StackPanel高度属性,但没有结果。
<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也不能正常工作。
答案 0 :(得分:16)
经过漫长的睡眠后,我通过将父StackPanel 更改为网格来解决这个问题。我将第二个StackPanel保留在ScrollViewer元素中,它可以工作。
我不知道为什么当ScrollViewer的父级是StackPanel而不是Grid时ScrollViewer不起作用。如果有人知道为什么请向我解释。我不想创建一个只有一列和两行的Grid,因为这似乎是StackPanel的垂直目的。
即使我在不知道原因的情况下解决了这个问题,我希望这个问题可以帮助其他人解决同样的问题,如果你正在阅读本文,你可以解释这个问题,请告诉我......我很乐意知道。
答案 1 :(得分:3)
堆栈面板是一种容器,它可以像你添加的子容量一样多,并为每个子容器提供相等的空间。因此,scrollviewer需要一个高度来告诉父级定义空间限制;所以它可以在指定的区域内运作。
希望有所帮助。答案 2 :(得分:1)
我刚刚向ScrollViewer提供了MaxHeight。我想ScrollViewer需要知道它的最大高度是什么,以便弄清楚何时显示滚动条,如果你有它们的自动可见性。
我只是尝试使用ScrollViewer和没有MaxHeight的ScrollViewer,它只适用于MaxHeight属性。
如果我不得不冒险猜测,我会说Grid从你设置的属性中知道它的MaxHeight,但我不确定,这只是猜测。
答案 3 :(得分:0)
我通过使StackPanel成为ScrollViewer的子项并设置StackPanel的高度来使我的工作