private void ObserveInput(CanvasShape canvasShape, IControl target) { canvasShape.Downs = Observable.FromEventPattern <PointerPressedEventArgs>( target, "PointerPressed").Select(e => { var p = e.EventArgs.GetPosition(target); return(new Point2( canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X, canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y)); }); canvasShape.Ups = Observable.FromEventPattern <PointerReleasedEventArgs>( target, "PointerReleased").Select(e => { var p = e.EventArgs.GetPosition(target); return(new Point2( canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X, canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y)); }); canvasShape.Moves = Observable.FromEventPattern <PointerEventArgs>( target, "PointerMoved").Select(e => { var p = e.EventArgs.GetPosition(target); return(new Point2( canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X, canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y)); }); bool captured = false; canvasShape.IsCaptured = () => captured; canvasShape.Capture = () => captured = true; canvasShape.ReleaseCapture = () => captured = false; }
private void ObserveInput(CanvasShape canvasShape, UIElement target) { canvasShape.Downs = Observable.FromEventPattern <MouseButtonEventArgs>( target, "PreviewMouseLeftButtonDown").Select(e => { var p = e.EventArgs.GetPosition(target); return(new Point2( canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X, canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y)); }); canvasShape.Ups = Observable.FromEventPattern <MouseButtonEventArgs>( target, "PreviewMouseLeftButtonUp").Select(e => { var p = e.EventArgs.GetPosition(target); return(new Point2( canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X, canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y)); }); canvasShape.Moves = Observable.FromEventPattern <MouseEventArgs>( target, "PreviewMouseMove").Select(e => { var p = e.EventArgs.GetPosition(target); return(new Point2( canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X, canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y)); }); canvasShape.IsCaptured = () => Mouse.Captured == target; canvasShape.Capture = () => target.CaptureMouse(); canvasShape.ReleaseCapture = () => target.ReleaseMouseCapture(); }