Compartilhar via


Criar grupos reutilizáveis de botões

Um grupo de comandos é uma coleção de comandos que sempre aparecem juntos em um menu ou barra de ferramentas. Qualquer grupo de comandos pode ser reutilizado atribuindo-o a diferentes menus pai na seção CommandPlacements do arquivo .vsct .

Os grupos de comandos normalmente contêm botões, mas também podem conter outros menus ou caixas de combinação.

Para criar um grupo reutilizável de botões

  1. Crie um projeto VSIX chamado ReusableButtons. Para obter mais informações, consulte Criar uma extensão com um comando de menu.

  2. Quando o projeto for aberto, adicione um modelo de item de comando personalizado chamado ReusableCommand. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e selecione Adicionar>Novo Item. Na caixa de diálogo Adicionar Novo Item, vá para Visual C#>Extensibility e selecione Comando Personalizado. No campo Nome na parte inferior da janela, altere o nome do arquivo de comando para ReusableCommand.cs.

  3. No arquivo .vsct, vá para a seção Símbolos e localize o elemento GuidSymbol que contém grupos e comandos para o projeto. Ele deve ser chamado guidReusableCommandPackageCmdSet.

  4. Adicione um IDSymbol para cada botão que você adicionará ao grupo, como no exemplo a seguir.

    <GuidSymbol name="guidReusableCommandPackageCmdSet" value="{7f383b2a-c6b9-4c1d-b4b8-a26dc5b60ca1}">
        <IDSymbol name="MyMenuGroup" value="0x1020" />
        <IDSymbol name="ReusableCommandId" value="0x0100" />
        <IDSymbol name="SecondReusableCommandId" value="0x0200" />
    </GuidSymbol>
    

    Por padrão, o modelo de item de comando cria um grupo chamado MyMenuGroup e um botão que tem o nome que você forneceu, juntamente com uma entrada IDSymbol para cada um.

  5. Na seção Grupos, crie um elemento Group que tenha os mesmos atributos GUID e ID fornecidos na seção Símbolos. Você também pode usar um grupo existente ou usar a entrada fornecida pelo modelo de comando, como no exemplo a seguir. Esse grupo aparece no menu Ferramentas

    <Groups>
        <Group guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600">
              <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
        </Group>
    </Groups>
    

Para criar um grupo de botões para reutilização

  1. Você pode colocar um comando ou menu em um grupo usando o grupo como pai na definição do comando ou menu, ou colocando o comando ou menu no grupo usando a seção CommandPlacements.

    Na seção Botões, defina um botão que tenha seu grupo como pai ou use o botão fornecido pelo modelo de pacote, conforme mostrado no exemplo a seguir.

    <Button guid="guidReusableCommandPackageCmdSet" id="ReusableCommandId" priority="0x0100" type="Button">
        <Parent guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" />
        <Icon guid="guidImages" id="bmpPic1" />
        <Strings>
            <ButtonText>Invoke ReusableCommand</ButtonText>
        </Strings>
    </Button>
    
  2. Se um botão deve aparecer em mais de um grupo, crie uma entrada para ele na seção CommandPlacements, que deve ser colocada após a seção Commands. Defina os atributos GUID e ID do elemento CommandPlacement para corresponder aos do botão que você deseja posicionar e, em seguida, defina o GUID e o ID de seu elemento Parent como os do grupo de destino, conforme mostrado no exemplo a seguir.

    <CommandPlacements>
        <CommandPlacement guid="guidReusableCommandPackageCmdSet" id="SecondReusableCommandId" priority="0x105">
          <Parent guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" />
        </CommandPlacement>
    </CommandPlacements>
    

    Observação

    O valor do campo Prioridade determina a posição do comando no novo grupo de comandos. As prioridades definidas no elemento CommandPlacement substituem as definidas na definição do item. Os comandos que têm valores de prioridade mais baixos são exibidos antes dos comandos que têm valores de prioridade mais altos. Valores de prioridade duplicados são permitidos, mas a posição relativa de comandos que têm o mesmo valor de prioridade não pode ser garantida porque a ordem na qual o comando devenv /setup cria a interface final do registro pode não ser consistente.

Para colocar um grupo reutilizável de botões em um menu

  1. Crie uma entrada na CommandPlacements seção . Defina o GUID e o CommandPlacement ID do elemento como os do seu grupo e defina o GUID pai e o ID como os do local de destino.

    A seção CommandPlacements deve ser colocada logo após a seção Commands:

    <CommandTable>
    ...
      <Commands>... </Commands>
      <CommandPlacements>... </CommandPlacements>
    ...
    </CommandTable>
    

    Um grupo de comandos pode ser incluído em mais de um menu. O menu pai pode ser um que você criou, um que é fornecido pelo Visual Studio (conforme descrito em ShellCmdDef.vsct ou SharedCmdDef.vsct), ou um que é definido em outro VSPackage. O número de camadas pai é ilimitado, desde que o menu pai esteja eventualmente conectado ao Visual Studio ou a um menu de atalho exibido por um VSPackage.

    O exemplo a seguir coloca o grupo na barra de ferramentas Gerenciador de Soluções, à direita dos outros botões.

    <CommandPlacements>
        <CommandPlacement guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" priority="0xF00">
          <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/>
        </CommandPlacement>
    </CommandPlacements>
    
    <CommandPlacements>
      <CommandPlacement guid="guidButtonGroupCmdSet" id="MyMenuGroup"
          priority="0x605">
        <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS" />
      </CommandPlacement>
    </CommandPlacements>