private void RenderPath(AlignedConnectionPath path)
        {
            var polyline = new ConnectionPathsBuilder(ConnectorMargin).GetPolylineFromAlignedPath(path);

            polyline.SetValue(Canvas.ZIndexProperty, 1);
            ChartCanvas.Children.Add(polyline);

            var diagram = Object as DiagramDTO;

            if (diagram == null)
            {
                throw new InvalidOperationException();
            }

            RenderCrowFoot(
                polyline.Points[1],
                polyline.Points[0],
                path.ConnectionPath.PrimitiveA,
                path.ConnectionPath.SideA,
                path.ConnectionPath.ConnectorTypeA,
                diagram.ShowModality);
            int lastPoint = polyline.Points.Count - 1;

            RenderCrowFoot(
                polyline.Points[lastPoint - 1],
                polyline.Points[lastPoint],
                path.ConnectionPath.PrimitiveB,
                path.ConnectionPath.SideB,
                path.ConnectionPath.ConnectorTypeB,
                diagram.ShowModality);
        }
        private void RenderConnections()
        {
            var pb    = new ConnectionPathsBuilder(ConnectorMargin);
            var paths = pb.GetPathsAligned(pb.GetPaths(_items, _links));

            foreach (var path in paths)
            {
                RenderPath(path);
            }
        }