我的页面左侧有一个垂直 StackPanel,其中包含以下元素:
- 1 个文本 block
- 1 个包含多个元素的垂直 StackPanel 可填充可用空间
我正在尝试使用 ScrollViewer 元素使第二个 StackPanel 可滚动 但没有成功。如果我将 ScrollViewer 高度定义为某个值,它可以工作,但我不想这样做,因为我希望它填充所有可用的垂直空间。
我正在考虑在读取 StackPanel 计算高度的代码中应用 ScrollViewer 高度,但这似乎不是正确的方法。 我还尝试将 Height 和 ActualHeight 绑定(bind)到 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 但可能是同一个问题。它说:
You can't without fixing the height of the StackPanel. It's designed to grow indefinitely in one direction. I'd advise using a different Panel
我将我的 StackPanel 更改为 Grid(由于行定义我不想这样做,因为我只想要一列)但是 ScrollViewer 也不起作用。
最佳答案
睡了一夜之后,我通过将 parent StackPanel 更改为 Grid 解决了这个问题。我将第二个 StackPanel 保留在 ScrollViewer 元素中并且它有效。
我不知道为什么当 ScrollViewer 的父级是 StackPanel 而不是 Grid 时它不起作用。如果有人知道为什么请向我解释。我不想制作只有一列和两行的网格,因为这似乎是垂直 StackPanel 的目的。
尽管我在不知道为什么的情况下解决了它,但我希望这个问题能帮助其他遇到同样问题的人,如果你正在阅读这篇文章并且你可以解释这个问题,请告诉我......我很想知道。
关于c# - ScrollViewer 不适用于 StackPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317618/