WPF中ScrollViewer 的问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中ScrollViewer 的问题。相关的知识,希望对你有一定的参考价值。

我用代码把ScrollViewer的Thumb的高度改成固定的了,但是出现的效果就是滑块开始位置没有在最顶上,而是离顶上有段距离,而且也滑不到最下边,离最下边还有段距离就不动了,请问怎样才能设置滑块的起始和结束位置,滑块的位置呢?

不要改ScrollViewer的样式,调用方法:
public void ScrollToHorizontalOffset(double offset);
或者
public void ScrollToVerticalOffset(double offset);
方法来设置滑块的位置。
其实ScrollViewer有一堆形如
ScrollToXXXX的方法,你可以都看一下
参考技术A ge,Image用于呈现你的图片。
ScrollViewer的横向和纵向滚动条都设置成Disabled,即不可见。
监听ScrollViewer的PreviewMouseMove事件和PreviewMouseLeftButtonUp事件

在PreviewMouseMove事件的处理方法中,判断如果鼠标的左键被按下,则

1、将鼠标lock在这个ScrollViewer中,即调用CaptureMouse。假设这个ScrollViewer名字为ImageViewer
if(!this.ImageViewer.IsMouseCaptured)

this.ImageViewer.CaptureMouse();

这一步很重要,这样鼠标的事件都会发送这个ScrollViewer,防止鼠标在拖动过程中移出ScrollViewer后无法监听到鼠标事件
2、根据鼠标移动的距离,调用ScrollViewer的API,滚动其内容

在PreviewMouseLeftButtonUp事件的处理方法中,接触鼠标的捕获,即
if(this.ImageViewer.IsMouseCaptured)

this.ImageViewer.ReleaseMouseCapture();

以上是关于WPF中ScrollViewer 的问题。的主要内容,如果未能解决你的问题,请参考以下文章

WPF 从 TreeView 中删除 ScrollViewer

WPF中ScrollViewer 的问题。

XAML/WPF - 里面有 StackPanel 的 ScrollViewer 不滚动

WPF:关于ScrollViewer中嵌套Datagrid的问题

给 WPF Grid 一个 ScrollViewer 减去滚动条的宽度

WPF: 实现 ScrollViewer 滚动到指定控件处