Windows Phone 7.我在Pivot内的PivotItem内的StackPanel内部有一个ScrollViewer。在ScrollViewer上方,还有一些其他控件。我的目的是ScrollViewer占用屏幕的下半部分(~400px),其内容垂直滚动(内容高度~800px)。
现在,现在没有垂直滚动 - 当我尝试拖动时,视图将返回上一个位置,就好像视口大小与内容大小完全匹配一样。当我查看ViewportHeight属性时,它是~800px - 与内容相同。
未设置ScrollViewer的高度(“自动”);我假设它将占用可用空间。显然情况并非如此。问题 - 没有手动设置高度,有没有办法实现“视口高度正是你剩下多少垂直空间”的逻辑?
编辑:这是XAML,删除了无关的详细信息:
<Pivot x:Name="Root">
<ctls:PivotItem>
<ctls:PivotItem.Header>Title</ctls:PivotItem.Header>
<StackPanel>
<!-- More stuff here-->
<ScrollViewer Name="MenuPanel" HorizontalScrollBarVisibility="Disabled">
<Canvas x:Name="Menu" HorizontalAlignment="Left" VerticalAlignment="Top">
</Canvas>
</ScrollViewer>
</StackPanel>
</ctls:PivotItem>
</Pivot>
画布的宽度和高度在代码中设置。
答案 0 :(得分:3)
两件事:
<Pivot x:Name="Root">
<ctls:PivotItem>
<ctls:PivotItem.Header>Title</ctls:PivotItem.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<!-- More stuff here-->
</Grid>
<ScrollViewer
Grid.Row="1"
Name="MenuPanel">
<Canvas x:Name="Menu"
Height="500"
Width="500"/>
</ScrollViewer>
</StackPanel>
</ctls:PivotItem>
</Pivot>
答案 1 :(得分:2)
在没有看到你的XAML的情况下这是假设的 - 但基于常见的问题
ScrollViewer实际上被分配了包含所有内容项所需的所有空间 要么给它一个绝对高度,要么将它包装在Grid中,这会将它限制在StackPanel中的可用空间。