protected void RenderCircuit()
        {
            if (DescriptionLookup == null)
            {
                return;
            }

            ClearCircuit();

            if (Circuit == null)
            {
                return;
            }

            // Add ElementVisuals
            foreach (var element in Circuit.PositionalComponents)
            {
                var renderer = new CircuitRenderer(DescriptionLookup);
                var visual   = new ElementDrawingVisual(renderer, element);
                ElementVisuals.Add(element, visual);
                AddChild(visual);
            }

            // Add HighlightVisuals
            foreach (var elementVisual in ElementVisuals)
            {
                var visual = new ElementHighlightBoxVisual(elementVisual.Value)
                {
                    Opacity = 0.0
                };
                HighlightBoxVisuals.Add(elementVisual.Key, visual);
                AddChild(visual);
            }

            RenderConnections();
        }
 public ElementHighlightBoxVisual(ElementDrawingVisual elementDrawing)
 {
     ElementDrawing = elementDrawing;
     HighlightBrush = Brushes.LightGray;
     UpdateVisual();
 }