void AddBorderAdorner(FrameworkElement adornedElement)
        {
            if (adornedElement != null)
            {
                AdornerLayer layr = AdornerLayer.GetAdornerLayer(adornedElement);
                if (layr != null)
                {
                    BorderAdorner adr = new BorderAdorner(adornedElement);
                    adr.ToolTip     = adornedElement.ToolTip;
                    adr.ContextMenu = adornedElement.ContextMenu;

                    layr.Add(adr);
                    SetDragging(adr);
                }
            }
        }
        void DragHelper_PreviewDragStarted(object sender, DragStartedEventArgs e)
        {
            SpaceObject s = e.DragObject as SpaceObject;

            if (s != null && s.Tag != null)
            {
                canvas.Children.Remove(s);
            }
            else
            {
                BorderAdorner badr = e.DragObject as BorderAdorner;
                if (badr != null)
                {
                    canvas.Children.Remove(SelectedSpaceObject);
                }
            }
        }
        void RemoveBorderAdorner(UIElement adornedElement)
        {
            if (adornedElement != null)
            {
                AdornerLayer layr = AdornerLayer.GetAdornerLayer(adornedElement);
                if (layr != null)
                {
                    Adorner[] adorners = layr.GetAdorners(adornedElement);
                    if (adorners != null)
                    {
                        foreach (Adorner adr in adorners)
                        {
                            BorderAdorner badr = adr as BorderAdorner;

                            if (badr != null)
                            {
                                layr.Remove(badr);
                                badr.DisposeDragging();
                            }
                        }
                    }
                }
            }
        }