• WPF滚动条嵌套,响应鼠标滑轮事件的处理


    在C# 中,两个ScrollViewer嵌套在一起或者ScrollViewer里面嵌套一个ListBox、Listview(控件本身有scrollviewer)的时候,我们本想要的效果是鼠标滚动整个ScrollViewer的内容,但你会发现实际结果和你想像的不一样,内部有scrollviewer的内容不会随鼠标的滚动而滚动,怎么办呢?

    解决办法如下:
    先截取内部的ScrollViewer的滚动事件,然后再重新让外部的ScrollViewer触发滚动事件就可以了

    假设有2个控件,一个是Listbox(内部名字是listbox),一个是ScrollViewer(外部),Listbox在ScrollViewer内部的,并且ListBox的scroll滚动功能都禁用为Disabled,只启用外部ScrollViewer的滚动功能,这时添加如下代码,则能使ListBox中的内容随ScrollViewer的鼠标滚动而滚动

    listbox.PreviewMouseWheel+=(sender,e)=>
    {
         var eventArg = new  MouseWheelEventArgs(e.MouseDevice,e.TimeDevice,e.Delta);
         eventArg.RoutedEvent = UIElement.MouseWheelEvent;
         eventArg.Source = sender;
         this.listbox.RaiseEvent(eventArg);
    };

    如果 是在模版内部,拿不到listbox实例 ,可用sender强转成对象示例。有多级嵌套同理,都把事件路由上去

    凡是含有ScrollViewer的控件或者ScrollViewer自身都适合

  • 相关阅读:
    IE、chrome、火狐中如何调试javascript脚本
    RFS_oracle的操作
    python_操作oracle数据库
    RFS_窗口或区域之间的切换
    RFS_关键字
    python_遇到问题
    python_GUI
    python_文件
    python之深浅拷贝
    python之编码和解码
  • 原文地址:https://www.cnblogs.com/shanranlei/p/3635249.html
Copyright © 2020-2023  润新知