在我的项目中,我使用ScrollViewer显示一些很长的信息。
我这样用:
<Grid Grid.Row="1" Height="630">
<ScrollViewer Background="Red" Grid.Row="1">
<Grid>
<Rectangle Height="3000" Fill="LightBlue" Width="440"/>
</Grid>
</ScrollViewer>
</Grid>
但是,不幸的是,当scrollView栏的垂直高度&gt;时,rectagnle不会完全显示。 2000。
我测试过没有Grid作为ScrollViewer的内容,只有Rectangle,结果是一样的。
Width也会发生错误。
你知道任何解决方法吗?怎么处理呢?
此post是同一个问题,没有任何修复。
先谢谢了! -Jimmy
测试完整的xaml是:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<Grid Grid.Row="1" Height="630">
<ScrollViewer Background="Red" Grid.Row="1">
<Grid>
<Rectangle Height="3000" Fill="LightBlue" Width="440"/>
</Grid>
</ScrollViewer>
</Grid>
</Grid>
答案 0 :(得分:3)
如果它只是一个文本,您可以使用此自定义控件:scrollable textblock。否则,将您的内容划分为大小为&lt; 2048。
UPD:
2048px是GPU缓存图形的限制。您可以在scrollviewer中使用大量控件(&lt; 2048)(总计> 2048)。在某些情况下,一切都很好,但有些情况下并不是
例如:
<ScrollViewer Background="#4FFF6060">
<Grid Background="#FFFF8A8A" Width="240" HorizontalAlignment="Left" d:LayoutOverrides="Height">
<Rectangle Fill="Blue" Height="4000" VerticalAlignment="Top" Width="120" HorizontalAlignment="Left"/>
<Rectangle Fill="Red" Height="2000" VerticalAlignment="Top" Width="120" HorizontalAlignment="Right"/>
<Rectangle Fill="Red" Height="2000" VerticalAlignment="Top" Width="120" HorizontalAlignment="Right" Margin="0,2000,0,0"/>
</Grid>
</ScrollViewer>
在这种情况下,蓝色矩形裁剪为2048像素,但两个高度为2000像素的矩形一个放在另一个上面看起来很好。
第二个示例使用StackPanel显示4000px区域,它也可以使用
<StackPanel Background="#FFFF8A8A" HorizontalAlignment="Right" Width="240" d:LayoutOverrides="Height">
<Rectangle Fill="#FF88FF00" Height="2000" Width="240" HorizontalAlignment="Right"/>
<Rectangle Fill="#FF88FF00" Height="2000" VerticalAlignment="Top" Width="240" HorizontalAlignment="Right"/>
</StackPanel>
答案 1 :(得分:3)
最大。 WP7上的纹理大小为2048x2048。矩形高度超出此限制。一旦将其降低到此限制以下,它就会开始工作。
此代码更适合实验,因为您可以识别底部边框:
<Grid Grid.Row="1" Height="630">
<ScrollViewer Background="Red" Grid.Row="1">
<Grid>
<Border Height="2048" BorderBrush="Blue" BorderThickness="5">
<Rectangle Height="2000" Fill="LightBlue" Width="440"/>
</Border>
</Grid>
</ScrollViewer>
</Grid>
一旦增加边框高度,底部就会消失。
另一方面,我不得不说这种行为也让我感到惊讶。我希望系统将大对象分解为更小的纹理,但显然WP7设计者决定不这样做,而是显示UI错误。