ScrollViewer—WPF滚动条控件
参考地址:ScrollViewer 概述 - WPF .NET Framework | Microsoft Learn
1.ScrollViewer定义与功能
- ScrollViewer是WPF应用程序的一个容器控件,用于在可以滚动的区域中显示其他可见元素。
- ScrollViewer封装; 水平和垂直ScrollBar元素以及一个内容容器,响应鼠标命令和键盘命令。
- 应用场景
- 长文本
- 大量数据的显示
- 图片浏览等
2.ScrollViewer使用
<ScrollViewer Name="scrollViewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Center">
<TextBlock TextWrapping="Wrap" Margin="0,0,0,20"
Text="这是一段很长的文本内容,用于演示TextBlock的文本换行和ScrollViewer的垂直滚动。当文本内容过多时,它将向下滚动以显示所有内容。同时,下方的矩形将保持固定,并在需要时触发水平滚动。">
</TextBlock>
<Rectangle Fill="AliceBlue" Width="500" Height="500"></Rectangle>
</StackPanel>
</ScrollViewer>
运行结果:
3.ScrollViewer常用属性
属性 | 解释 | 属性值 |
---|---|---|
VerticalScrollBarVisibility | 设置垂直滚动条可见属性 | Auto:内容超出时显示 Visible:显示 Hidden:隐藏,用光标仍可以滚动内容 Disable:隐藏,用光标不可以滚动内容 |
HorizontalScrollBarVisibility | 设置水平滚动条可见属性 | 与VerticalScrollBarVisibility属性的用法相同 |
IsEnabled | 设置ScrollViewer控件是否使用滚动条 | 默认:True |
4.滚动类型
- 物理滚动
用于按预设的物理增量滚动内容。这是大多数Panel元素的默认滚动行为。 - 滚动逻辑
用于滚动到逻辑树的下一项。
5.用Button来控制ScrollViewer的滚动
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Center">
<Button Name="btnPageUp" Width="80" Height="20" Margin="0,0,0,5" Content="向上翻页" Click="btnPageUp_Click"/>
<Button Name="btnPageDown" Width="80" Height="20" Margin="0,0,0,5" Content="向下翻页" Click="btnPageDown_Click"/>
<Button Name="btnLineUp" Width="80" Height="20" Margin="0,0,0,5" Content="向上滚动" Click="btnLineUp_Click"/>
<Button Name="btnLineDown" Width="80" Height="20" Margin="0,0,0,5" Content="向下滚动" Click="btnLineDown_Click"/>
<Button Name="btnScrollToTop" Width="80" Height="20" Margin="0,0,0,5" Content="滚到顶部" Click="btnScrollToTop_Click"/>
<Button Name="btnScrollToEnd" Width="80" Height="20" Margin="0,0,0,5" Content="滚到底部" Click="btnScrollToEnd_Click"/>
</StackPanel>
private void btnPageUp_Click(object sender, RoutedEventArgs e)
{
scrollViewer.PageUp(); //向上翻页
}
private void btnPageDown_Click(object sender, RoutedEventArgs e)
{
scrollViewer.PageDown(); //向下翻页
}
private void btnLineUp_Click(object sender, RoutedEventArgs e)
{
scrollViewer.LineUp(); //向上滚动
}
private void btnLineDown_Click(object sender, RoutedEventArgs e)
{
scrollViewer.LineDown(); //向下滚动
}
private void btnScrollToTop_Click(object sender, RoutedEventArgs e)
{
scrollViewer.ScrollToTop(); //滚到顶部
}
private void btnScrollToEnd_Click(object sender, RoutedEventArgs e)
{
scrollViewer.ScrollToEnd(); //滚到底部
}