示例#1
0
        public AsMovableByMouseControl AsMovableByMouse(UIElement e, Action Update)
        {
            var c = new AsMovableByMouseControl();

            var q = false;


            #region iAtMouseDown
            Action <object> iAtMouseDown =
                (sender) =>
            {
                q = true;

                if (c.Enter != null)
                {
                    c.Enter();
                }
            };

            int iAtMouseDownContext = this._AtMouseDown.Count;
            this._AtMouseDown.Add(iAtMouseDown);

            e.MouseLeftButtonDown +=
                delegate
            {
                this.AtMouseDown(null, iAtMouseDownContext);
            };
            #endregion


            Action <object, int, int> iAtMouseMove =
                (sender, px, py) =>
            {
                e.MoveTo(Canvas.GetLeft(e) + px - 3, Canvas.GetTop(e) + py - 3);

                if (Update != null)
                {
                    Update();
                }
            };

            var cAtMouseMove = this._AtMouseMove.Count;
            this._AtMouseMove.Add(iAtMouseMove);

            this.MouseMove +=
                (sender, args) =>
            {
                if (!q)
                {
                    return;
                }
                var p = args.GetPosition(e);

                //Console.WriteLine(new { p.X, p.Y });

                this.AtMouseMove(null, cAtMouseMove, Convert.ToInt32(p.X), Convert.ToInt32(p.Y));
            };

            #region iAtMouseUp
            Action <object> iAtMouseUp =
                (sender) =>
            {
                if (!q)
                {
                    return;
                }

                q = false;

                if (c.Exit != null)
                {
                    c.Exit();
                }
            };

            int iAtMouseUpContext = this._AtMouseUp.Count;
            this._AtMouseUp.Add(iAtMouseUp);

            e.MouseLeftButtonUp +=
                delegate
            {
                this.AtMouseUp(null, iAtMouseUpContext);
            };
            #endregion



            return(c);
        }
        public AsMovableByMouseControl AsMovableByMouse(UIElement e, Action Update)
        {
            var c = new AsMovableByMouseControl();

            var q = false;


            #region iAtMouseDown
            Action<object> iAtMouseDown =
                (sender) =>
                {
                    q = true;

                    if (c.Enter != null)
                        c.Enter();
                };

            int iAtMouseDownContext = this._AtMouseDown.Count;
            this._AtMouseDown.Add(iAtMouseDown);

            e.MouseLeftButtonDown +=
                delegate
                {
                    this.AtMouseDown(null, iAtMouseDownContext);
                };
            #endregion


            Action<object, int, int> iAtMouseMove =
                (sender, px, py) =>
                {
                    e.MoveTo(Canvas.GetLeft(e) + px - 3, Canvas.GetTop(e) + py - 3);

                    if (Update != null)
                        Update();
                };

            var cAtMouseMove = this._AtMouseMove.Count;
            this._AtMouseMove.Add(iAtMouseMove);

            this.MouseMove +=
                (sender, args) =>
                {
                    if (!q)
                        return;
                    var p = args.GetPosition(e);

                    //Console.WriteLine(new { p.X, p.Y });

                    this.AtMouseMove(null, cAtMouseMove, Convert.ToInt32(p.X), Convert.ToInt32(p.Y));
                };

            #region iAtMouseUp
            Action<object> iAtMouseUp =
                (sender) =>
                {
                    if (!q)
                        return;

                    q = false;

                    if (c.Exit != null)
                        c.Exit();
                };

            int iAtMouseUpContext = this._AtMouseUp.Count;
            this._AtMouseUp.Add(iAtMouseUp);

            e.MouseLeftButtonUp +=
                delegate
                {
                    this.AtMouseUp(null, iAtMouseUpContext);
                };
            #endregion





            return c;
        }