个人资料

跳过导航链接首页 > 博客列表 > 博客正文

UWP 自定义控件DragMove拖动

分类:

1.直接使用thumb控件,绑定dragdelta事件,其中e.HorizontalChange和e.VerticalChange分别是移动的距离,然后自行调整thumb的显示位置(比如用RenderTransform或者margin)


            thumb1.DragDelta += (s, e) => {
                var p = new Point(0,0);
                p.X += e.HorizontalChange;
                p.Y += e.VerticalChange;
                P1 = p;
            };


2.自定义UIElement的PointerMoved事件,大部分控件都派生于UIElement,可以直接自定义PointerMoved事件,自定义元素的拖动逻辑。如下图所示两个圆点是thumb拖动,而方块(StackPanel)则是自定义PointerMoved事件拖动。


            rect_grid.PointerMoved += (s, e) => {
                //获取鼠标
                var p = e.GetCurrentPoint(this);
                if (p.Properties.IsLeftButtonPressed||p.Properties.IsMiddleButtonPressed)
                {
                    //获得移动距离
                    var deltaX = (p.Position.X - OldPosition.X);
                    var deltaY = (p.Position.Y - OldPosition.Y);
                    //重新设置两个thumb的位置
                    P1 = new Point(P1.X + deltaX, P1.Y + deltaY);
                    P2 = new Point(P2.X + deltaX, P2.Y + deltaY);
                    //根据P1/P2调整StackPanel位置
                    RePaint();
                }
                //调整基准位置
                OldPosition = new Point(p.Position.X, p.Position.Y);
            };

(end)

songshizhao
最初发表2021/5/13 9:53:31 最近更新2021/5/13 9:57:10 129
为此篇作品打分
10
   评论