当前位置:网站首页 / WPF / 正文

ay 记录wpf scrollviewer中嵌套datagrid滚动的问题的解决

时间:2023年05月05日 | 作者 : aaronyang | 分类 : WPF | 浏览: 1280次 | 评论 0

Ay:

 外层的scrollviewer使用touchmove,touchdown和touchup事件组合,实现滚动,

 然后datagrid在scrollviewer中也能滚动了,因为我不想需要使用datagrid自带的滚动,他会让外面的scrollviewer滚动不了,反正dg中的内容已经全部显示了。

    <ScrollViewer x:Name="sv" TouchDown="mScrollViewer_TouchDown" TouchMove="mScrollViewer_TouchMove" TouchUp="mScrollViewer_TouchUp">

                <Grid Margin="0,0,0,0">

    <DataGrid  SelectionUnit="FullRow" SelectionMode="Single" PreviewMouseWheel="dgGoods_PreviewMouseWheel"

                              Name="dgGoods" >

大致如上xaml结构

后台代码实现

  private void dgGoods_PreviewMouseWheel(object sender, MouseWheelEventArgs e)

        {

            var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);

            eventArg.RoutedEvent = UIElement.MouseWheelEvent;

            eventArg.Source = sender;

            this.sv.RaiseEvent(eventArg);

        }


        double mPointY;//触摸点的Y坐标

        double mOffsetY;//滚动条当前位置

        bool mIsTouch = false;//是否触摸

                              //触摸事件

        private void mScrollViewer_TouchDown(object sender, TouchEventArgs e)

        {

            mIsTouch = true;//正在触摸

            mOffsetY = this.sv.VerticalOffset;//获取ScrollViewer滚动条当前位置

            TouchPoint point = e.GetTouchPoint(sv);//获取相对于ScrollViewer的触摸点位置

            mPointY = point.Position.Y;//触摸点的Y坐标

        }


        //触摸移动事件

        private void mScrollViewer_TouchMove(object sender, TouchEventArgs e)

        {

            if (mIsTouch == true)//如果正在触摸

            {

                TouchPoint point = e.GetTouchPoint(sv);//获取相对于ScrollViewer的触摸点位置

                double DiffOffset = point.Position.Y - mPointY;//计算相对位置

                this.sv.ScrollToVerticalOffset(mOffsetY - DiffOffset);//ScrollViewer滚动到指定位置

            }

        }


        //触摸结束事件

        private void mScrollViewer_TouchUp(object sender, TouchEventArgs e)

        {

            mIsTouch = false;//触摸结束

        }



====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========


这样鼠标滚轮和触摸屏都可以滚了。

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

推荐您阅读更多有关于“”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

抖音:wpfui 工作wpf

目前在合肥企迈科技公司上班,加我QQ私聊

2023年11月网站停运,将搬到CSDN上

AYUI8全源码 Github地址:前往获取

杨洋(AaronYang简称AY,安徽六安人)AY唯一QQ:875556003和AY交流

高中学历,2010年开始web开发,2015年1月17日开始学习WPF

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

标签列表