zoukankan      html  css  js  c++  java
  • WPF的ScrollViewer鼠标的滚动

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

    };

    参考网上的,

    假设有2个控件一个是wpf的UserControl控件(内部名字是可以不定义),一个是 ScrollViewer(外部),UserControl在ScrollViewer内部的,ScrollViewer这是充当的是一个容器的功能,里面加载的是一个wpf的UserControl控件, 要使UserControl随着鼠标的滑轮滚动而滚动外部ScrollViewer的滚动功能,这时添加如下代码,则能使UserControl中的内容随ScrollViewer的鼠标滚 动而滚动,具体代码如下,主要是参照上面的例子改造的:

        //KongTiaoDetailUC是一个WPF的UserControl控件

                   KongTiaoDetailUC KongTiaoUC = new KongTiaoDetailUC(EqyId);
                    KongTiaoUC.Margin = new Thickness(12);

         //给该UserControl控件添加鼠标滑轮滚动事件
                    KongTiaoUC.PreviewMouseWheel +=KongTiaoUC_PreviewMouseWheel;

        //SVDatail是前台界面ScrollViewer的名称,将UserControl作为ScrollViewer的content添加进去
                    SVDatail.Content = KongTiaoUC;

      //滚动事件

      voidKongTiaoUC_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
            {
                var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
                //指定路由事件对UIElement的事件类型
                eventArg.RoutedEvent = UIElement.MouseWheelEvent;
                eventArg.Source = sender;
                //指定路由事件的源对象
                (sender as UserControl).RaiseEvent(eventArg);
            }

  • 相关阅读:
    作为一个大学才开始入门学计算机编程的孩子想要的东西-----听我扯,你蛋疼,他菊紧,我开心
    面向切面编程(AOP)的理解
    cakephp 的query方法,直接写在controller中是否 有点不合适
    《请不要辜负这个时代》
    我也谈——时间管理,让生活有序
    我也谈 AngularJS 怎么使用Directive, Service, Controller
    javascript 用call来继承实例属性
    好的资源
    angular 实现modal windows效果(即模态窗口,半透明的遮罩层),以及bootstrap(css,components,js)的初步学习
    javascript 按位或(|),无符号右移(>>>)运算,组合技巧来实现————密码强度提示,四种情况??
  • 原文地址:https://www.cnblogs.com/sky300/p/3334565.html
Copyright © 2011-2022 走看看