Просмотрщик DGML в VS 2010 - PullRequest
1 голос
/ 14 апреля 2010

Я начал бездельничать со средством просмотра DGML в VS 2010 (что выглядит потрясающе). Я знаю, что вы можете создавать диаграммы из своей базы кода.

Есть ли поддержка создания ориентированного графа из всего, что мне нравится, или это просто инструмент анализа кода? Я хотел бы что-то вроде «Добавить узел» или что-то в этом роде.

Ответы [ 2 ]

1 голос
/ 15 мая 2010

Основные задачи редактирования DGML можно найти здесь: Как редактировать и настраивать документы графиков

1 голос
/ 19 апреля 2010

Вы должны сгенерировать график вручную. Насколько я знаю, нет никаких визуальных инструментов для изменения его структуры на этом уровне.

Если вы щелкнете правой кнопкой мыши в пустом пространстве, вы можете выбрать Просмотр DGML, который покажет вам исходный файл XML и изменит его. Когда вы знаете структуру, вы также можете автоматически генерировать график из своего кода, просто создав XML-файл с правильной структурой. Все, что вам нужно определить, это раздел Ссылки. Вы также можете определить раздел «Узлы», если хотите, чтобы на графике было несколько красивых имен.

Вот пример, как вы можете это сделать. Скорее всего, это более эффективные способы, но этот легко понять.

        XmlWriter xmlWriter = XmlWriter.Create(outputFile, new XmlWriterSettings() { Encoding = Encoding.UTF8 });
        xmlWriter.WriteStartDocument();
        xmlWriter.WriteStartElement("DirectedGraph", "http://schemas.microsoft.com/vs/2009/dgml");
        xmlWriter.WriteStartElement("Nodes");
        // dump nodes
        foreach (Name n in Names)
        {
            xmlWriter.WriteStartElement("Node");
            xmlWriter.WriteAttributeString("Id", n.Id); // id is an unique identifier of the node 
            xmlWriter.WriteAttributeString("Label", n.Label); // label is the text on the node you see in the graph
            xmlWriter.WriteEndElement();
        }
        xmlWriter.WriteEndElement();
        xmlWriter.WriteStartElement("Links");
        // dump links
        foreach (Link l in Links)
        {
            xmlWriter.WriteStartElement("Link");
            xmlWriter.WriteAttributeString("Source", l.Source); // ID! of the source node
            xmlWriter.WriteAttributeString("Target", l.Target); // ID of the target node 
            xmlWriter.WriteEndElement();
        }
        xmlWriter.WriteEndElement();
        xmlWriter.WriteEndElement();
        xmlWriter.WriteEndDocument();
        xmlWriter.Close();

это все, что вам нужно сделать ... если вы не хотите группировать или раскрашивать ... это добавит немного больше кода ...

...