WPF实现滚动条只要在控件外围加上ScrollViewer即可,但是滚动的时候没有动画效果,比较生硬,在滚动的时候添加过渡动画实现平滑滚动能给我们的软件增色不少。
接下来,在上一篇博客(WPF使用FlowDocument加载文本并修改文本样式https://blog.csdn.net/dnazhd/article/details/89307386)的基础上进行修改,这里只展示垂直滚动效果,水平滚动方式同理。为了更加明显的展示效果,先将协议文本内容添加的更多些。
原始滚动效果:
修改后效果:
修改流程:
1.新建SmoothScroll文件夹,并新建SmoothScrollViewer.cs类,继承自ScrollViewer,注册步进长度依赖属性,代码如下:
using System.Windows;
using System.Windows.Controls;
namespace RichTextBoxDemo.SmoothScroll
{
public class SmoothScrollViewer : ScrollViewer
{
/// <summary>
/// 垂直归一化步进长度
/// </summary>
public double VerticalScrollRatio
{
get { return (double)GetValue(VerticalScrollRatioProperty); }
set { SetValue(VerticalScrollRatioProperty, value); }
}
//注册VerticalScrollRatio依赖属性
public static readonly DependencyProperty VerticalScrollRatioProperty =
DependencyProperty.Register("VerticalScrollRatio", typeof(double), typeof(SmoothScrollViewer), new PropertyMetadata(0.0, new PropertyChangedCallback(V_ScrollRatioChangedCallBack)));
private static void V_ScrollRatioChangedCallBack(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var scrollViewer = (ScrollViewer)(d);
if (scrollViewer != null)
{