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

摘要:
注册子控件的PreviewMouseWheel,然后在滚动时设置控件的IsHitTestVisible=false。由于此参数设置为false后,子控件中的TextBox和CheckBox将变为无效,因此应在停止滚动后重新设置该参数。

注册子控件的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);
        }

免责声明:文章转载自《WPF ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效,子控件拦截父控件滚动效果解决办法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# 使用Bitmap类进行图片裁剪在ubuntu上面安装perl下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF 右上角带数字的按钮

效果如图所示   三种方案, 1:不改控件模版,布局实现,死开 2:改button模版,利用附加属性,附加附加属性,功能多了话,不利于拓展 3:继承button,添加依赖属性,接下来是这种 1:新建类 为啥交LBSButton,因为是我帅帅的名字啊, 问我为啥截图?因为方便啊,反正代码等会也会放下面 让我们添加一个属性啊,右上角信息的内容,我这里直接用...

wpf开发常见问题(1)

      经过一段时间wpf的学习和实际开发.现在与大家分享下,在实际中wpf遇到的一些实际问题.silverlight 2.0正式版已经出来.sliverlight的功能应该与wpf大步分类似。其中的经验照样可以套用到sliverlight上.现在开始. 一.与模板相关问题 1.如何取得模板中的元素? 直切重点 (1)第一步确定控件相关ContentP...

easyui-combobox加载json中对象的属性---datagrid的数据

 这次做项目遇到了一个问题,在easyui-combobox加载json数据中对象的属性。后台返回的json中包含一个对象,而我想调用对象中的属性,后台返回的json如下: 1 { "rows": [ { "chances": [], "name": "系统管理员",...

【WPF】软件更新程序的设计思路

目标:客户端程序在启动时,自动联网检查服务端是否有新的版本,有则提示用户更新客户端。 思路: 1、打开Visual Studio,在主体程序的解决方案下再新建一个叫自动更新程序的项目。主体程序的目录是D:workspaceMyProjectClient,自动更新程序的目录是D:workspaceMyProjectUpdateTool。 2、最后打包出来时将...

wpf 右键ListBox可编辑

之前wpf项目用到listbox右键编辑的功能,想到当时找资料不好找,特地将自己的结果拿出来与大家分享,探讨。 首先添加一个listbox。  <ListBox x:Name="List_lianxiren" MouseDown="List_lianxiren_MouseDown"  SelectionMode="Extended" Margin="...

WPF 设置全屏

public void setaa() { #region 设置全屏 this.WindowState = System.Windows.WindowState.Normal; this.WindowStyle = System.Windows.WindowStyle....