Vytváření opakovaně použitelných skupin tlačítek
Skupina příkazů je kolekce příkazů, které se vždy zobrazují společně na nabídce nebo panelu nástrojů. Libovolnou skupinu příkazů můžete znovu použít tak, že ji přiřadíte k různým nadřazeným nabídkám v části CommandPlacements v souboru .vsct .
Skupiny příkazů obvykle obsahují tlačítka, ale můžou obsahovat i jiné nabídky nebo pole se seznamem.
Vytvoření opakovaně použitelné skupiny tlačítek
Vytvořte projekt VSIX s názvem
ReusableButtons
. Další informace najdete v tématu Vytvoření rozšíření pomocí příkazu nabídky.Po otevření projektu přidejte vlastní šablonu položky příkazu s názvem ReusableCommand. V Průzkumník řešení klikněte pravým tlačítkem myši na uzel projektu a vyberte Přidat>novou položku. V dialogovém okně Přidat novou položku přejděte do visual C#>Rozšiřitelnost a vyberte Vlastní příkaz. V poli Název v dolní části okna změňte název souboru příkazu na ReusableCommand.cs.
V souboru .vsct přejděte do části Symbols a vyhledejte element GuidSymbol, který obsahuje skupiny a příkazy pro projekt. Měl by mít název guidReusableCommandPackageCmdSet.
Přidejte IDSymbol pro každé tlačítko, které přidáte do skupiny, jako v následujícím příkladu.
<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>
Ve výchozím nastavení šablona položky příkazu vytvoří skupinu s názvem MyMenuGroup a tlačítko s názvem, který jste zadali, spolu s IDSymbol položka pro každou z nich.
V oddílu Groups vytvořte prvek Group, který má stejné atributy GUID a ID jako atributy uvedené v části Symboly. Můžete také použít existující skupinu nebo použít položku, která je poskytována šablonou příkazu, jako v následujícím příkladu. Tato skupina se zobrazí v nabídce Nástroje .
<Groups> <Group guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600"> <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/> </Group> </Groups>
Vytvoření skupiny tlačítek pro opakované použití
Příkaz nebo nabídku můžete do skupiny vložit buď pomocí skupiny jako nadřazené položky v definici příkazu nebo nabídky, nebo vložením příkazu nebo nabídky do skupiny pomocí oddílu CommandPlacements.
V části Tlačítka definujte tlačítko, které má vaši skupinu jako nadřazenou položku, nebo použijte tlačítko, které poskytuje šablona balíčku, jak je znázorněno v následujícím příkladu.
<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>
Pokud se tlačítko musí objevit ve více než jedné skupině, vytvořte pro ni položku v části CommandPlacements, která musí být umístěna za oddílem Příkazy. Nastavte atributy GUID a ID elementu CommandPlacement tak, aby odpovídaly atributům tlačítka, které chcete umístit, a pak nastavte IDENTIFIKÁTOR GUID a ID jeho nadřazeného prvku na ty z cílové skupiny, jak je znázorněno v následujícím příkladu.
<CommandPlacements> <CommandPlacement guid="guidReusableCommandPackageCmdSet" id="SecondReusableCommandId" priority="0x105"> <Parent guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" /> </CommandPlacement> </CommandPlacements>
Poznámka:
Hodnota pole Priorita určuje pozici příkazu v nové skupině příkazů. Priority nastavené v elementu CommandPlacement přepíší ty, které jsou nastaveny v definici položky. Příkazy s nižší prioritou se zobrazí před příkazy, které mají vyšší hodnoty priority. Jsou povoleny duplicitní hodnoty priority, ale relativní pozice příkazů, které mají stejnou hodnotu priority, nelze zaručit, protože pořadí, ve kterém příkaz devenv /setup vytvoří konečné rozhraní z registru, nemusí být konzistentní.
Umístění opakovaně použitelné skupiny tlačítek do nabídky
Vytvořte položku v oddílu
CommandPlacements
. Nastavte identifikátor GUID a ID elementuCommandPlacement
na ty, které jsou ve vaší skupině, a nastavte nadřazený identifikátor GUID a ID na hodnoty cílového umístění.Oddíl CommandPlacements by se měl umístit hned za oddíl Příkazy:
<CommandTable> ... <Commands>... </Commands> <CommandPlacements>... </CommandPlacements> ... </CommandTable>
Skupinu příkazů lze zahrnout do více než jedné nabídky. Nadřazenou nabídkou může být ta, kterou jste vytvořili, kterou poskytuje Visual Studio (jak je popsáno v shellCmdDef.vsct nebo SharedCmdDef.vsct) nebo jednu, která je definována v jiném balíčku VSPackage. Počet nadřazených vrstev je neomezený, pokud je nadřazená nabídka nakonec připojená k sadě Visual Studio nebo k místní nabídce, která se zobrazí balíčkem VSPackage.
Následující příklad umístí skupinu na panel nástrojů Průzkumník řešení napravo od ostatních tlačítek.
<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>