好吧,这听起来很傻,但我不能让ScrollViewer正常工作.
我需要做的是
我需要做的是
>让Silverlight页面使用HTML页面的100%宽度/高度
>在Sliverlight页面的顶部有一个高度= 160px的控件,然后剩下的(100% – 160px)是一个动态改变内容的ScrollViewer.
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
然后在XAML中:
<Grid x:Name="LayoutRoot" Height="Auto"> <StackPanel Orientation="Vertical" Height="Auto"> <App:ASilverlightControl x:Name="Header" Height="160"/> <ScrollViewer Name="svw" HorizontalScrollBarVisibility="disabled" VerticalScrollBarVisibility="Visible" Height="Auto" > <StackPanel Orientation="Vertical" x:Name="DynamicContentHere"> </StackPanel> </ScrollViewer> </StackPanel> </Grid>
现在,无论我尝试什么,ScrollViewer总是会扩展/收缩以包含StackPanel中的所有元素,即使这意味着在屏幕下溢出但没有垂直滚动条.
我能让它工作的唯一方法是将高度= 800设置为ScrollViewer.
解决方法
如果将ScrollViewer放在StackPanel中,它将无法工作. StackPanel将始终允许ScrollViewer内容所需的所有空间.
您应该使用包含两行的Grid:
<Grid x:Name="LayoutRoot" Height="Auto"> <Grid.RowDeFinitions> <RowDeFinition Height="160"/> <RowDeFinition Height="*"/> </Grid.RowDeFinitions> <App:ASilverlightControl x:Name="Header" Grid.Row="0"/> <ScrollViewer Name="svw" Grid.Row="1" HorizontalScrollBarVisibility="disabled" VerticalScrollBarVisibility="Visible"> <StackPanel Orientation="Vertical" x:Name="DynamicContentHere"> ... </StackPanel> </ScrollViewer> </Grid>
第二个RowDeFinition中的*将自动使ScrollViewer尽可能地填充,但仍然将其保留在可视区域内,从而使ScrollViewer工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。