public void RemoveSemiHighlightFromEdge(TEdge edge)
        {
            semiHighlightedEdges.Remove(edge);
            EdgeControl ec;

            if (_edgeControls.TryGetValue(edge, out ec))
            {
                GraphElementBehaviour.SetIsSemiHighlighted(ec, false);
                GraphElementBehaviour.SetSemiHighlightInfo(ec, null);
            }
        }
        public void RemoveSemiHighlightFromVertex(TVertex vertex)
        {
            semiHighlightedVertices.Remove(vertex);
            VertexControl vc;

            if (_vertexControls.TryGetValue(vertex, out vc))
            {
                GraphElementBehaviour.SetIsSemiHighlighted(vc, false);
                GraphElementBehaviour.SetSemiHighlightInfo(vc, null);
            }
        }
        public void SemiHighlightEdge(TEdge edge, object semiHighlightInfo)
        {
            semiHighlightedEdges[edge] = semiHighlightInfo;
            EdgeControl ec;

            if (_edgeControls.TryGetValue(edge, out ec))
            {
                GraphElementBehaviour.SetIsSemiHighlighted(ec, true);
                GraphElementBehaviour.SetSemiHighlightInfo(ec, semiHighlightInfo);
            }
        }
        public void HighlightEdge(TEdge edge, object highlightInfo)
        {
            highlightedEdges[edge] = highlightInfo;
            EdgeControl ec;

            if (_edgeControls.TryGetValue(edge, out ec))
            {
                GraphElementBehaviour.SetIsHighlighted(ec, true);
                GraphElementBehaviour.SetHighlightInfo(ec, highlightInfo);
            }
        }
        public void SemiHighlightVertex(TVertex vertex, object semiHighlightInfo)
        {
            semiHighlightedVertices[vertex] = semiHighlightInfo;
            VertexControl vc;

            if (_vertexControls.TryGetValue(vertex, out vc))
            {
                GraphElementBehaviour.SetIsSemiHighlighted(vc, true);
                GraphElementBehaviour.SetSemiHighlightInfo(vc, semiHighlightInfo);
            }
        }
        private void SetHighlightProperties(TEdge edge, EdgeControl edgeControl)
        {
            object highlightInfo;

            if (IsHighlightedEdge(edge, out highlightInfo))
            {
                GraphElementBehaviour.SetIsHighlighted(edgeControl, true);
                GraphElementBehaviour.SetHighlightInfo(edgeControl, highlightInfo);
            }

            object semiHighlightInfo;

            if (IsSemiHighlightedEdge(edge, out semiHighlightInfo))
            {
                GraphElementBehaviour.SetIsSemiHighlighted(edgeControl, true);
                GraphElementBehaviour.SetSemiHighlightInfo(edgeControl, semiHighlightInfo);
            }
        }
        private void SetHighlightProperties(TVertex vertex, VertexControl presenter)
        {
            object highlightInfo;

            if (IsHighlightedVertex(vertex, out highlightInfo))
            {
                GraphElementBehaviour.SetIsHighlighted(presenter, true);
                GraphElementBehaviour.SetHighlightInfo(presenter, highlightInfo);
            }

            object semiHighlightInfo;

            if (IsSemiHighlightedVertex(vertex, out semiHighlightInfo))
            {
                GraphElementBehaviour.SetIsSemiHighlighted(presenter, true);
                GraphElementBehaviour.SetSemiHighlightInfo(presenter, semiHighlightInfo);
            }
        }