2

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

4

1 回答 1

2

这可以通过首先声明一个在右键单击图表时出现在上下文菜单中的新命令,然后为此编写处理程序代码来布局图表来完成。

在 MSDN 上有一个非常好的声明和注册新命令的指南: How to: Add a Command to the Shortcut Menu

需要布局图表的方法是类上的AutoLayoutShapeElementsDiagram

以下代码将用于布置图表(假设您OnArrangeDiagramClick在覆盖该方法时将调用的方法注册为事件处理程序GetMenuCommands):

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();
            }
        }
    }
}
于 2016-02-06T16:39:56.633 回答