如何让 ScrollViewer 滚动视图区域?
我在 Window 内的 StackPanel 内的 Border 内的 ScrollViewer 内有一个 Grid >。
ScrollViewer 在右侧放置一个滚动条,但它不可滚动。
如何让 ScrollViewer 使其内容可滚动?
alt text http://www.deviantsart .com/upload/1bl34e1.png
<Window x:Class="TestScroll234343.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="150" Width="300">
<StackPanel>
<!--<StackPanel Height="150"> doesn't work either-->
<Border>
<ScrollViewer>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Row0"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Row1"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Row2"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Row3"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="Row4"/>
<TextBlock Grid.Row="5" Grid.Column="0" Text="Row5"/>
<TextBlock Grid.Row="6" Grid.Column="0" Text="Row6"/>
<TextBlock Grid.Row="7" Grid.Column="0" Text="Row7"/>
<TextBlock Grid.Row="8" Grid.Column="0" Text="Row8"/>
<TextBlock Grid.Row="9" Grid.Column="0" Text="Row9"/>
</Grid>
</ScrollViewer>
</Border>
</StackPanel>
</Window>
I have a Grid inside a ScrollViewer inside a Border inside a StackPanel inside a Window.
The ScrollViewer puts a scrollbar on the right, but it is not scrollable.
How can I get the ScrollViewer to make its contents scrollable?
alt text http://www.deviantsart.com/upload/1bl34e1.png
<Window x:Class="TestScroll234343.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="150" Width="300">
<StackPanel>
<!--<StackPanel Height="150"> doesn't work either-->
<Border>
<ScrollViewer>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Row0"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Row1"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Row2"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Row3"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="Row4"/>
<TextBlock Grid.Row="5" Grid.Column="0" Text="Row5"/>
<TextBlock Grid.Row="6" Grid.Column="0" Text="Row6"/>
<TextBlock Grid.Row="7" Grid.Column="0" Text="Row7"/>
<TextBlock Grid.Row="8" Grid.Column="0" Text="Row8"/>
<TextBlock Grid.Row="9" Grid.Column="0" Text="Row9"/>
</Grid>
</ScrollViewer>
</Border>
</StackPanel>
</Window>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该设置 ScrollViewer 的高度。
如果不这样做,
Border
会询问ScrollViewer
它想要什么高度,而ScrollViewer
会询问Border
应该是多少高度。其他选项:
StackPanel
更改为DockPanel
(它的增长不会超过Window
)StackPanel< 的高度/code> 并在
ScrollViewer
代码中绑定到它:
You should set the height of the
ScrollViewer
.If you don't, the
Border
ask theScrollViewer
what height do it want and theScrollViewer
asks theBorder
what height should it be.Other options:
StackPanel
for aDockPanel
(it does not grow more than theWindow
)StackPanel
and bind to it in theScrollViewer
Code: