建立可重複使用的按鈕群組
命令群組是一組一律會一起出現在功能表或工具列上的命令集合。 任何命令群組都可以重複使用,只要在 .vsct 檔案的 CommandPlacements 區段中將其指派到不同父功能表即可。
命令群組通常包含按鈕,但也可以包含其他功能表或下拉式方塊。
建立可重複使用的按鈕群組
建立名為
ReusableButtons
的 VSIX 應用程式專案。 如需詳細資訊,請參閱使用功能表命令建立延伸模組。當專案開啟時,新增名為「ReusableCommand」的自訂命令項目範本。 在 [方案總管] 中,以滑鼠右鍵按一下專案節點,並選取 [新增]>[新增項目]。 在 [加入新項目] 對話方塊中,移至 [Visual C#]>[擴充性],然後選取 [自訂命令]。 在視窗底部的 [名稱] 欄位中,將命令檔名變更為 ReusableCommand.cs。
在 .vsct 檔案中,移至 Symbols 區段,找到包含專案的群組和命令的 GuidSymbol 元素。 它應該命名為 guidReusableCommandPackageCmdSet。
針對您要新增至群組的每個按鈕新增 IDSymbol,如下列範例所示。
<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>
根據預設,命令項目範本會建立名為「MyMenuGroup」的群組,以及具有您提供之名稱的按鈕,各自有一個 IDSymbol 項目。
在 Groups 區段中,建立具有與 Symbols 區段中指定之 GUID 和 ID 屬性相同的 Group 元素。 您也可以使用現有的群組,或使用命令範本所提供的項目,如下列範例所示。 此群組會出現在 [工具] 功能表上
<Groups> <Group guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600"> <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/> </Group> </Groups>
建立一組按鈕以供重複使用
您可以將命令或功能表放在群組中,方法是使用群組做為命令或功能表定義的父系,或使用 CommandPlacements 區段將命令或功能表放在群組中。
在 Buttons 區段中,定義將群組設為其父系的按鈕,或使用套件範本所提供的按鈕,如下列範例所示。
<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>
如果按鈕必須出現在多個群組中,請在 CommandPlacements 區段中為它建立一個項目,該區段必須放在 Commands 區段之後。 設定 CommandPlacement 元素的 GUID 和 ID 屬性,以符合您要放置的按鈕屬性,然後將其 Parent 元素的 GUID 和 ID 設定為目標群組的 GUID 和 ID,如下列範例所示。
<CommandPlacements> <CommandPlacement guid="guidReusableCommandPackageCmdSet" id="SecondReusableCommandId" priority="0x105"> <Parent guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" /> </CommandPlacement> </CommandPlacements>
注意
[優先順序] 欄位的值會決定命令在新命令群組中的位置。 CommandPlacement 元素中設定的優先順序會覆寫項目定義中設定的優先順序。 具有較低優先順序值的命令會顯示在具有較高優先順序值的命令之前。 允許重複的優先順序值,但是無法保證具有相同優先順序值的命令相對位置,因為 devenv /setup 命令從登錄建立最終介面的順序可能不一致。
將可重複使用的按鈕群組放在功能表上
在
CommandPlacements
區段中建立一個項目。 將CommandPlacement
元素的 GUID 和 ID 設定為群組的 GUID 和 ID,並將父 GUID 和 ID 設定為目標位置的 GUID 和 ID。CommandPlacements 區段應該放在 Commands 區段之後:
<CommandTable> ... <Commands>... </Commands> <CommandPlacements>... </CommandPlacements> ... </CommandTable>
命令群組可以包含在多個功能表上。 父功能表可以是您所建立的功能表、Visual Studio 所提供的功能表 (如 ShellCmdDef.vsct 或 SharedCmdDef.vsct 中所述),或另一個 VSPackage 中定義的功能表。 只要父功能表最終連接到 Visual Studio 或 VSPackage 所顯示的捷徑功能表,父層的數目並無限制。
下列範例會將群組放在 [方案總管] 工具列上其他按鈕的右邊。
<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>