2016-09-01 22 views
0

Visual Studioのコンテキストメニューにサブメニューを追加します。同様の何ReSharperのに行い、次のように resharper submenuVisual Studio Extensionのコンテキストメニューにサブメニューを追加

私のセットアップは次のとおりです。 MyTopMenuGroupCommand1MyMenuControllerが含まれています。 MenuController自体にはもう1つのグループがあり、他のいくつかのコマンドが含まれています。残念ながら、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#:

期待通りのCommand1が "トップレベル" のコマンドとして表示されている
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?) 
} 

。 他のコマンドとメニューはまったく表示されません。

メニューが表示されないのはなぜですか。どのように表示させることができますか?

+0

セットアップがうまくいきました。再起動で問題が解決しました。これに苦しんでいる他の人たちのために、私はこれをアーカイブする方法について少し紹介しました:https://blog.famoser.ch/visual-studio-extensions-commands/ –

答えて

1

XAMLがきれいに見えます(ボタンとメニューには実際にストリングセクションがあることが前提です)、Command3/Command4を表示する必要があります。 Command1のようにMenuItemCallbacksがアタッチされていることを確認してください。

+0

あなたは正しいと思います。場合によっては、再起動が必要です。 –

関連する問題