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; }