【发布时间】:2013-03-10 00:41:05
【问题描述】:
我的页面左侧有一个垂直 StackPanel,其中包含以下元素:
- 1 个文本块
- 1 个垂直 StackPanel,其中包含多个填充可用空间的元素
我正在尝试使用 ScrollViewer 元素使第二个 StackPanel 可滚动,但没有成功。如果我将 ScrollViewer Height 定义为某个值,它可以工作,但我不想这样做,因为我希望它填充所有可用的垂直空间。
我正在考虑在读取 StackPanel 计算高度的代码中应用 ScrollViewer Height,但这似乎不是正确的做法。 我还尝试将 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 也不起作用。
【问题讨论】:
-
我试过你提供的代码,它工作正常。你能解释一下你遇到的确切问题吗?或者你能提供整个页面的代码吗?
-
@Sach 感谢您抽出宝贵时间。我睡着了,今天早上醒来,并设法通过使用 Grid 更改其父元素(垂直 StackPanel)来解决它(我的代码现在充满了网格......)
-
@Sach 在我的问题中,我说我有一个有两行的网格,但我弄错了,它是一个 StackPanel,答案在我的问题中 -.- 我应该编辑问题并回答它还是删除它?
-
您可以随时回答自己的问题,它会帮助遇到同样问题的其他人。 :) 我认为你应该这样做。很高兴你自己解决了。 :)
-
@Sach 完成。我仍然不知道为什么它与 Grid 作为父级而不是 StackPanel 一起使用,所以我觉得这不是答案。无论如何,谢谢。
标签: c# xaml windows-runtime winrt-xaml scrollviewer