/// <param name="startPoint">Relative to the adorner layer. Note the adorner layer will not scroll.</param>
 public RubberbandAdorner(Controls.DesignerCanvas canvas, Point startPoint, Action <object, Rect> callback) : base(canvas)
 {
     _Canvas     = canvas;
     _Callback   = callback;
     _StartPoint = _EndPoint = startPoint;
     chrome      = new RubberbandChrome()
     {
         HorizontalAlignment = HorizontalAlignment.Left,
         VerticalAlignment   = VerticalAlignment.Top,
         Margin = new Thickness(_StartPoint.X, _StartPoint.Y, 0, 0)
     };
     ResizeChrome();
     this.AddVisualChild(chrome);
     CaptureMouse();
 }
 internal void SetCanvas(Controls.DesignerCanvas canvas)
 {
     if (_ParentCanvas != null)
     {
         _ParentCanvas.ZoomChanged -= ParentCanvas_ZoomChanged;
     }
     _ParentCanvas = canvas;
     if (canvas != null)
     {
         canvas.ZoomChanged += ParentCanvas_ZoomChanged;
     }
     if (canvas != null)
     {
         OnUpdateLayout();
     }
 }