public void Redraw()
        {
            LogicalCircuit currentCircuit = this.project.LogicalCircuit;

            if (this.lastLogicalCircuit != currentCircuit)
            {
                this.lastLogicalCircuit = currentCircuit;
                this.lastBack           = null;
            }
            if (this.lastBack == null)
            {
                if (this.circuitSymbol.Count == 1)
                {
                    this.lastBack = (Canvas)this.circuitSymbol[0].ProbeView;
                }
                else
                {
                    CircuitSymbol symbol = this.circuitSymbol.First(s => s.LogicalCircuit == currentCircuit);
                    this.lastBack = this.ProbeView(symbol);
                }
                Tracer.Assert(this.lastBack.Children.Count == this.BitWidth);
            }
            for (int i = 0; i < this.BitWidth; i++)
            {
                Function7Segment.SetVisual((Shape)this.lastBack.Children[i], this[i]);
            }
        }
 public void TurnOff()
 {
     foreach (CircuitSymbol symbol in this.circuitSymbol)
     {
         if (symbol.HasCreatedGlyph)
         {
             Canvas back = this.ProbeView(symbol);
             for (int i = 0; i < 8; i++)
             {
                 Function7Segment.SetVisual((Shape)back.Children[i], State.Off);
             }
         }
     }
 }