Visual studio 2015 如何在DSL工具中添加用于布置图表的上下文菜单选项?

Visual studio 2015 如何在DSL工具中添加用于布置图表的上下文菜单选项?,visual-studio-2015,dsl-tools,Visual Studio 2015,Dsl Tools,我想在VisualStudioDSL工具(可视化和建模SDK)中创建的DSL扩展中添加一个选项,通过右键单击图表时出现的上下文菜单自动排列布局。这是可能的吗?首先,右键单击图表时,声明上下文菜单中出现的新命令,然后编写此命令的处理程序代码来布局图表 关于在MSDN上声明和注册新命令,有一个非常好的指南: 布局图所需的方法位于diagram类上 下面的代码将用于布置图表(假设您在重写GetMenuCommands方法时,将名为OnArrangeDiagramClick的方法注册为事件处理程序):

我想在VisualStudioDSL工具(可视化和建模SDK)中创建的DSL扩展中添加一个选项,通过右键单击图表时出现的上下文菜单自动排列布局。这是可能的吗?

首先,右键单击图表时,声明上下文菜单中出现的新命令,然后编写此命令的处理程序代码来布局图表

关于在MSDN上声明和注册新命令,有一个非常好的指南:

布局图所需的方法位于
diagram
类上

下面的代码将用于布置图表(假设您在重写
GetMenuCommands
方法时,将名为
OnArrangeDiagramClick
的方法注册为事件处理程序):

private void OnArrangeDiagramClick(object sender, EventArgs e)
{
    foreach (var selectedObject in CurrentSelection)
    {
        if (selectedObject is YourDslDiagram)
        {
            var diagram = (selectedObject as YourDslDiagram);
            using (var tx = diagram.Store.TransactionManager.BeginTransaction("ModelAutoLayout"))
            {
                diagram.AutoLayoutShapeElements(diagram.NestedChildShapes, Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGRoutingStyle.VGRouteStraight, Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.PlacementValueStyle.VGPlaceSN, false);
                tx.Commit();
            }
        }
    }
}