protected override void OnRender(DrawingContext drawingContext)
        {
            Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize);

            SolidColorBrush renderBrush = (SolidColorBrush)Application.Current.Resources["AdornerDiagramBrush"];

            renderBrush.Opacity = 0.5;

            DroppingElementAdornerType adornertype = (this.AdornedElement as Controls.ConnectionDiagramBase)?.AdornerType ?? DroppingElementAdornerType.DrawEllipse;
            Pen    renderPen    = new Pen((SolidColorBrush)Application.Current.Resources["AdornerDiagramBrush"], 1.5);
            double renderRadius = 5.0;

            if (DroppingElementAdornerType.DrawEllipse.Equals(adornertype))
            {
                // Draw a circle at each corner.
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopLeft, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopRight, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomLeft, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomRight, renderRadius, renderRadius);
            }
            else if (DroppingElementAdornerType.DrawLine.Equals(adornertype))
            {
                renderPen.DashStyle = DashStyles.Dash;
                renderPen.Thickness = 6.0;
                drawingContext.DrawLine(renderPen, adornedElementRect.TopLeft, adornedElementRect.TopRight);
                drawingContext.DrawLine(renderPen, adornedElementRect.TopLeft, adornedElementRect.BottomLeft);
                drawingContext.DrawLine(renderPen, adornedElementRect.TopRight, adornedElementRect.BottomRight);
                drawingContext.DrawLine(renderPen, adornedElementRect.BottomLeft, adornedElementRect.BottomRight);
            }
            else
            {
                //TODO:Extention
            }
        }
 /// <summary>
 /// Sets the value of the AdornerType attached property
 /// for a given dependency object.
 /// </summary>
 /// <param name="obj">The object to which the property value
 /// is written.</param>
 /// <param name="value">Sets the AdornerType value of the specified object.</param>
 public static void SetAdornerType(DependencyObject obj, DroppingElementAdornerType value)
 {
     obj.SetValue(AdornerTypeProperty, value);
 }
        protected override void OnRender(DrawingContext drawingContext)
        {
            Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize);

            SolidColorBrush renderBrush = (SolidColorBrush)Application.Current.Resources["AdornerPanelBrush"];

            renderBrush.Opacity = 0.5;
            Pen    renderPen    = new Pen((SolidColorBrush)Application.Current.Resources["AdornerPanelBrush"], 1.5);
            double renderRadius = 5.0;

            DroppingElementAdornerType adornertype = DiagramElementDropBehavior.GetAdornerType(this.AdornedElement);

            if (DroppingElementAdornerType.DrawEllipse.Equals(adornertype))
            {
                // Draw a circle at each corner.
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopLeft, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopRight, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomLeft, renderRadius, renderRadius);
                drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomRight, renderRadius, renderRadius);
            }
            else if (DroppingElementAdornerType.DrawLine.Equals(adornertype))
            {
                renderPen.DashStyle = DashStyles.DashDot;
                renderPen.Thickness = renderRadius;
                drawingContext.DrawLine(renderPen, adornedElementRect.TopLeft, adornedElementRect.TopRight);
                drawingContext.DrawLine(renderPen, adornedElementRect.TopLeft, adornedElementRect.BottomLeft);
                drawingContext.DrawLine(renderPen, adornedElementRect.TopRight, adornedElementRect.BottomRight);
                drawingContext.DrawLine(renderPen, adornedElementRect.BottomLeft, adornedElementRect.BottomRight);
            }
            else
            {
                //get the custom adorner from drop element
                UIElement uc = DiagramElementDropBehavior.GetCustomAdornerContent(this.AdornedElement);

                // Create the visual brush based on the UserControl
                VisualBrush vb = new VisualBrush(uc);

                //get the alignment
                HorizontalAlignment horizon  = (HorizontalAlignment)uc.GetValue(HorizontalAlignmentProperty);
                VerticalAlignment   vertical = (VerticalAlignment)uc.GetValue(VerticalAlignmentProperty);


                if (horizon == HorizontalAlignment.Left)
                {
                    drawingContext.DrawRectangle(vb, null, new Rect(0, 0, renderRadius, ActualHeight));
                }
                else if (horizon == HorizontalAlignment.Right)
                {
                    drawingContext.DrawRectangle(vb, null, new Rect(ActualWidth, 0, renderRadius, ActualHeight));
                }
                else if (vertical == VerticalAlignment.Center)
                {
                    drawingContext.DrawRectangle(vb, null, new Rect(ActualWidth / 2, 0, renderRadius, ActualHeight));
                }

                if (vertical == VerticalAlignment.Bottom)
                {
                    drawingContext.DrawRectangle(vb, null, new Rect(0, ActualHeight, ActualWidth, renderRadius));
                }
                else if (vertical == VerticalAlignment.Top)
                {
                    drawingContext.DrawRectangle(vb, null, new Rect(0, 0, ActualWidth, renderRadius));
                }
                else if (vertical == VerticalAlignment.Center)
                {
                    drawingContext.DrawRectangle(vb, null, new Rect(0, ActualWidth / 2, ActualWidth, renderRadius));
                }

                if (vertical == VerticalAlignment.Stretch && horizon == HorizontalAlignment.Stretch)
                {
                    drawingContext.DrawRectangle(vb, null, new Rect(0, 0, renderRadius, ActualHeight));
                    drawingContext.DrawRectangle(vb, null, new Rect(ActualWidth - renderRadius, 0, renderRadius, ActualHeight));
                    drawingContext.DrawRectangle(vb, null, new Rect(0, ActualHeight - renderRadius, ActualWidth, renderRadius));
                    drawingContext.DrawRectangle(vb, null, new Rect(0, 0, ActualWidth, renderRadius));
                }

                //// Draw using the visual brush in the rect at 10,10,100,25



                ////var grayBrush = renderBrush;

                ////left
                ////drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(1, 1, 5, ActualHeight));
                ////right
                ////drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(ActualWidth - 6, 1, 5, ActualHeight));
                ////bottom
                ////drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(1, ActualHeight, ActualWidth - 2, 5));
            }
        }