wpf 中使用ScrollViewer 时鼠标滑轮按照内容进行滚动

xaml:

1
2
<ScrollViewer x:Name="sv"   CanContentScroll="False" PreviewMouseWheel="ScrollViewer_PreviewMouseWheel"   >
</ScrollViewer>

后台:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
       {
           ScrollViewer viewer = sv;  //sv 为Scrollview的名字,在Xaml文件中定义。
           if (viewer == null) return;
           double num = Math.Abs((int)(e.Delta / 2));
           double offset = 0.0;
           if (e.Delta > 0)
           {
               offset = Math.Max((double)0.0, (double)(viewer.VerticalOffset - num));//viewer.VerticalOffset获取包含滚动内容的垂直偏移量的值。
           }
           else
           {
               offset = Math.Min(viewer.ScrollableHeight, viewer.VerticalOffset + num);
           }
           if (offset != viewer.VerticalOffset)
           {
               viewer.ScrollToVerticalOffset(offset);//将 ScrollViewer 内的内容滚动到指定的垂直偏移量位置。
               e.Handled = true;
           }
 
       }

  

posted @   Yhzwei  阅读(542)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示