首页 > 其他 > 详细

ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效,子控件拦截父控件滚动效果解决办法

时间:2020-08-06 14:33:51      阅读:76      评论:0      收藏:0      [点我收藏+]

注册子控件的PreviewMouseWheel,然后在滚动的时候设置控件的 IsHitTestVisible = false,因为这个参数设为false之后子控件里面的TextBox,CheckBox会失效,所以在停止滚动后要把参数设回来。代码如下

 private void girdOrder_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
        {
            RetryUtil.TimeOutAction(200, () =>
            {
                this.Dispatcher.Invoke(() =>
                {
                    this.IsHitTestVisible = false;
                });
            },
            () =>
            {
                this.Dispatcher.Invoke(() =>
                {
                    this.IsHitTestVisible = true;
                });

            });
        }

下面是TimeOutAction的代码片

/// <summary>
        /// 
        /// </summary>
        /// <param name="TS">超时等待时长ms</param>
        /// <param name="OnAction">执行任务</param>
        /// <param name="TimeAction">超时处理任务</param>
        public static void TimeOutAction(int TS, Action OnAction, Action TimeAction)
        {
            CancellationTokenSource cts = new CancellationTokenSource(TS);
            cts.Token.Register(() =>
            {//等待设置时间后执行
                TimeAction();
            });
            Task.Factory.StartNew(() =>
            {//立即执行
                while (!cts.Token.IsCancellationRequested)
                {
                    OnAction();
                    Task.Delay(TS).Wait();
                }
            }, cts.Token);
        }

 

ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效,子控件拦截父控件滚动效果解决办法

原文:https://www.cnblogs.com/siazon/p/13445856.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!