protected override void OnElementChanged(ElementChangedEventArgs <DrawingView> e) { base.OnElementChanged(e); if (Control == null && Element != null) { canvasView = new SKCanvasView(Forms.Forms.NativeParent) { BackgroundColor = Element.BackgroundColor.ToNative() }; canvasView.Show(); Element.Points.CollectionChanged += OnPointsCollectionChanged; SetNativeControl(canvasView); } if (e.OldElement != null) { canvasView !.EvasCanvas.DeleteEventAction(EvasObjectCallbackType.MouseDown, MouseDown); canvasView.EvasCanvas.DeleteEventAction(EvasObjectCallbackType.MouseUp, MouseUp); canvasView.EvasCanvas.DeleteEventAction(EvasObjectCallbackType.MouseMove, MouseMove); canvasView.PaintSurface -= OnPaintSurface; } if (e.NewElement != null) { canvasView !.PaintSurface += OnPaintSurface; canvasView.EvasCanvas.AddEventAction(EvasObjectCallbackType.MouseDown, MouseDown); canvasView.EvasCanvas.AddEventAction(EvasObjectCallbackType.MouseUp, MouseUp); canvasView.EvasCanvas.AddEventAction(EvasObjectCallbackType.MouseMove, MouseMove); } }
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); if (e.PropertyName == DrawingView.PointsProperty.PropertyName) { canvasView !.EvasCanvas.DeleteEventAction(EvasObjectCallbackType.MouseUp, MouseUp); LoadPoints(); canvasView.EvasCanvas.AddEventAction(EvasObjectCallbackType.MouseUp, MouseUp); } }
protected override void Dispose(bool disposing) { if (disposed) { return; } disposed = true; if (Element != null) { Element.Points.CollectionChanged -= OnPointsCollectionChanged; canvasView !.EvasCanvas.DeleteEventAction(EvasObjectCallbackType.MouseDown, MouseDown); canvasView.EvasCanvas.DeleteEventAction(EvasObjectCallbackType.MouseUp, MouseUp); canvasView.EvasCanvas.DeleteEventAction(EvasObjectCallbackType.MouseMove, MouseMove); canvasView.PaintSurface -= OnPaintSurface; } base.Dispose(disposing); }