2016-09-01 221 views
0

我想將一個子菜單添加到Visual Studio中的上下文菜單中。類似於ReSharper的作用: resharper submenu將子菜單添加到Visual Studio擴展中的上下文菜單中

我的設置如下: MyTopMenuGroup:包含Command1MyMenuController。 MenuController本身又有另一個組,其中包含一些其他命令。不幸的是,MenuController不顯示。

我XAML:

<Groups> 
    <Group guid="mypkg" id="MyTopMenuGroup" > 
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" /> 
    </Group> 
    <Group guid="mypkg" id="MySubMenuGroup"> 
    <Parent guid="mypkg" id="MyMenuController" /> 
    </Group> 
</Groups> 

<Menus> 
    <Menu guid="mypkg" id="MyMenuController" type="MenuController"> 
    <Parent guid="mypkg" id="MyTopMenuGroup" /> 
    </Menu> 
</Menus> 

<Buttons> 
    <Button guid="mypkg" id="Command1" type="Button"> 
    <Parent guid="mypkg" id="MyTopMenuGroup" /> 
    </Button> 
    <Button guid="mypkg" id="Command2" type="Button"> 
    <Parent guid="mypkg" id="MyMenuController" /> 
    </Button> 
    <Button guid="mypkg" id="Command3" type="Button"> 
    <Parent guid="mypkg" id="MySubMenuGroup" /> 
    </Button> 
    <Button guid="mypkg" id="Command4" type="Button"> 
    <Parent guid="mypkg" id="MySubMenuGroup" /> 
    </Button> 
</Buttons> 

C#這增加的按鈕菜單:

OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; 
if (commandService != null) 
{ 
    var menuCommandID = new CommandID(CommandSet, Command1); 
    var menuItem = new MenuCommand(this.MenuItemCallback, menuCommandID); 
    commandService.AddCommand(menuItem); 

    //etc, do this for all 4 Commands 
    //no code to construct groups & menus (is this necessary?) 
} 

如預期COMMAND1顯示爲 「頂層」 命令。 其他命令和菜單根本不顯示。

爲什麼菜單不顯示,我怎樣才能看到它?

+0

設置沒問題,重新啓動修復了我的問題。對於與此相關的其他人,我已經寫了一篇關於如何將其歸檔的小介紹:https://blog.famoser.ch/visual-studio-extensions-commands/ –

回答

1

您的XAML看起來很好(我認爲按鈕和菜單實際上有字符串部分),並且Command3/Command4應該是可見的。只要確保它們具有像Command1一樣的MenuItemCallbacks。

+0

你說得對,設置很好。有時你需要的只是重啓。 –

相關問題