zoukankan      html  css  js  c++  java
  • (ScrollViewer或者有滚动条的控件)嵌套一个(ScrollViewer或者有滚动条的控件)禁用里面的滚动条

    转自:http://blog.csdn.net/haylhf/article/details/8351203 后有改动

    在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);
    
    };

    WPF可能把e.TimeDevice参数改为e.Timestamp

    listbox.PreviewMouseWheel+=(sender,e)=>
    {
    
         var eventArg = new  MouseWheelEventArgs(e.MouseDevice,e.Timestamp,e.Delta);
    
         eventArg.RoutedEvent = UIElement.MouseWheelEvent;
    
         eventArg.Source = sender;
    
         this.listbox.RaiseEvent(eventArg);
    
    };
  • 相关阅读:
    css
    AcWing 145 超市 (贪心)
    AcWing 144 最长异或值路径 (Trie)
    AcWing 143 最大异或对 (Trie)
    AcWing 142 前缀统计 (Trie)
    AcWing 141 周期 (KMP)
    AcWing 139 回文子串的最大长度 (哈希+二分 / Manacher)
    AcWing 136 邻值查找 (set)
    AcWing 133 蚯蚓 (队列)
    AcWing 131 直方图中最大的矩形 (单调栈)
  • 原文地址:https://www.cnblogs.com/Early-Bird/p/5489212.html
Copyright © 2011-2022 走看看