我想要的是:
我想在我的Silverlight 4应用程序中有一个ScrollView,它与内容一起在Height中增长,但如果它会比它的容器更高,它会显示一个滚动条.
我想在我的Silverlight 4应用程序中有一个ScrollView,它与内容一起在Height中增长,但如果它会比它的容器更高,它会显示一个滚动条.
解决方案我发现:
我找到了很多问题,其中解决方案是拉伸Scrollviewer,但这不是我想要的. Scrollviewer应该尽可能小.
我的问题:
为了使滚动查看器顶部更加困难,找到一个标题,它是一个具有静态高度的堆栈面板.
解决方案Approch 1:
我首先尝试使用普通的XAML,但我无法弄清楚它应该如何工作.
<Grid Height="Auto" x:Name="myGrid" > <Grid.RowDeFinitions> <RowDeFinition Height="100"/> <RowDeFinition Height="Auto" /> </Grid.RowDeFinitions> <StackPanel Grid.Row="0" Background="AliceBlue"> <!-- Dummy Header--> </StackPanel> <ScrollViewer Grid.Row="1" Height="Auto"> <Button Width="100" Height="50" Click="Button_Click" /> <!-- onClick the button will switch between height="600" and height="50" Code: private void Button_Click(object sender,RoutedEventArgs e) { if (sender is Button) { Button btn = (Button)sender; btn.Height = (btn.Height == 50) ? 600 : 50 ; } } --> </ScrollViewer> </Grid>
如果你点击按钮它会变得更高,Scrollviewer会因为它很高而被剪切.任何sugestions?
解决方案方法2:
然后我尝试使用包含容器的actualHeight设置ScrollViewer的* max *高度,因此我在ScrollViewer周围插入了一个StackPanel.这在VS2010 XAML设计器中有效,但在代码执行时无效.我不知道为什么…
<Grid Height="Auto" x:Name="myGrid" > <Grid.RowDeFinitions> <RowDeFinition Height="100"/> <RowDeFinition Height="*" /> </Grid.RowDeFinitions> <StackPanel Grid.Row="0" Background="AliceBlue"> <!-- Dummy Header--> </StackPanel> <StackPanel Grid.Row="1" x:Name="myStackPanel" Height="Auto" VerticalAlignment="Stretch"> <ScrollViewer Height="Auto" MaxHeight="{Binding ElementName=myStackPanel,Path=ActualHeight}"> <Button Width="100" Height="50" Click="Button_Click" /> <!-- onClick the button will switch between height="600" and height="50" Code: private void Button_Click(object sender,RoutedEventArgs e) { if (sender is Button) { Button btn = (Button)sender; btn.Height = (btn.Height == 50) ? 600 : 50 ; } } --> </ScrollViewer> </StackPanel> </Grid>
提前致谢!
解决方法
解决方案是正确使用VerticalAlignment.您希望包含scrollview的Grid行是剩余空间的大小.您不希望Scrollviewer最初占用所有空间,但需要将其限制在该空间内. Stretch的默认VerticalAlignment将占用所有可用大小.使用Top代替它将使它只能达到它需要的高度,直到Grid将其大小限制为可用空间.
<Grid x:Name="myGrid" > <Grid.RowDeFinitions> <RowDeFinition Height="100"/> <RowDeFinition Height="*" /> </Grid.RowDeFinitions> <StackPanel Grid.Row="0" Background="AliceBlue"> <!-- Dummy Header--> </StackPanel> <ScrollViewer Grid.Row="1" VerticalAlignment="Top" VerticalScrollBarVisibility="Auto"> </ScrollViewer> </Grid>
但请注意VerticalScrollBarVisibility,尽管文本中有迹象表明它不应包含在您自己的xaml中.也许实际上这就是你一直以来的真实情况.使用该位置删除VerticalAlignment.根据您的场景的其余部分,您可能会发现实际上滚动查看器的完整范围的轮廓边框更有意义.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。