public static void AddNewVertex()
        {
            try
            {
                // Привязываем графическое представлением вершины и данные для алгоритма
                XmlSerializableVertexBag NewVertexData = VertexBag.GenereteVertex();
                CurrentStorage.BindingVertexWithAlgoVertex.Add(NewVertexData);
                // Добавляем вершину для алгоритма
                CurrentStorage.VertexList.Add(NewVertexData.DataVertex);

                // Добавляем графическое представление
                Border NewVertex = NewVertexData.GraphicVertex;
                NewVertex.MouseEnter += Border_MouseEnter;
                NewVertex.MouseLeave += Border_MouseLeave;
                NewVertex.MouseDown  += Border_MouseLeftButtonDown;
                NewVertex.MouseUp    += Border_MouseLeftButtonUp;

                Canvas.SetLeft(NewVertex, DrawAreaCanvas.Width / 2);
                Canvas.SetTop(NewVertex, DrawAreaCanvas.Height / 2);
                CurrentStorage.BindingVertexWithLinesStart.Add(NewVertex, new List <Line>());
                CurrentStorage.BindingVertexWithLinesEnd.Add(NewVertex, new List <Line>());
                DrawAreaCanvas.Children.Add(NewVertex);
                if (StorageChanged != null)
                {
                    StorageChanged(new StorageChangeEventArgs(Backup()));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public static void CopyVertex(VertexBag x)
        {
            try
            {
                // Привязываем графическое представлением вершины и данные для алгоритма
                XmlSerializableVertexBag NewVertexData = VertexBag.GenereteVertex(x.DataVertex.Name);
                StorageForCopy.BindingVertexWithAlgoVertex.Add(NewVertexData);
                // Добавляем вершину для алгоритма
                StorageForCopy.VertexList.Add(NewVertexData.DataVertex);

                // Добавляем графическое представление
                Border NewVertex = NewVertexData.GraphicVertex;
                NewVertex.MouseEnter += Border_MouseEnter;
                NewVertex.MouseLeave += Border_MouseLeave;
                NewVertex.MouseDown  += Border_MouseLeftButtonDown;
                NewVertex.MouseUp    += Border_MouseLeftButtonUp;

                Canvas.SetLeft(NewVertexData.GraphicVertex, Canvas.GetLeft(x.GraphicVertex));
                Canvas.SetTop(NewVertexData.GraphicVertex, Canvas.GetTop(x.GraphicVertex));
                StorageForCopy.BindingVertexWithLinesStart.Add(NewVertex, new List <Line>());
                StorageForCopy.BindingVertexWithLinesEnd.Add(NewVertex, new List <Line>());
                StorageForCopy.DrawAreaChildrens.Add(NewVertex);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }