我想为我在Visual Studio DSL工具(可视化和建模SDK)中创建的DSL扩展添加一个选项,通过右键单击图表时出现的上下文菜单自动排列布局。这可能吗?
答案 0 :(得分:2)
这可以通过首先声明在右键单击图表时出现在上下文菜单中的新命令,然后为此编写处理程序代码来布局图表来完成。
在MSDN上声明和注册新命令有一个非常好的指南:How to: Add a Command to the Shortcut Menu
该方法需要在Diagram
类上对AutoLayoutShapeElements进行布局。
以下代码将用于布局图表(假设您在覆盖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();
}
}
}
}