我按照 this walk-through description 为工具窗口定义了一个工具栏。

向工具栏添加新按钮,并将它们连接到我的包中的代码,没有问题并且工作正常(所以我不是在寻找有关如何添加简单按钮的信息)。我看到还有其他按钮类型,例如 SplitDropDownMenuButton 。两者都完全符合我的要求。但是我找不到任何关于如何以正确的方式定义子菜单的信息,我所有的实验都失败了。

这是我的按钮定义:

<Button guid="guidVsCmdSet" id="cmdIdSplitDowndown" priority="0x106" type="SplitDropDown">
  <Parent guid="guidVsCmdSet" id="VsToolbarGroup" />
  <Icon guid="guidImages" id="bmpPic2" />
  <CommandFlag>IconAndText</CommandFlag>
  <Strings>
    <CommandName>cmdIdSplitDropdown</CommandName>
    <ButtonText>Goto Next</ButtonText>
  </Strings>
</Button>

我想添加一个具有一些预定义/静态子项的 SplitDropDown 按钮。我想按钮的视觉外观看起来像 Visual Studio 的“向后导航”按钮。这就是我正在努力实现的目标。

有人知道带有子菜单的 SplitDropDown 按钮的定义是什么样的吗?

最佳答案

似乎 Visual Studio IDE 不再支持 SplitDropDownMenuButton 类型(至少 v11,但我没有在早期版本上测试它。也许我错了,但我无法将这些按钮放入我的工具栏)。相反,可以使用 MenuMenuController 类型的 Menu。 Menu 类型的行为类似于已弃用的 MenuButton (即使由于按钮的高度较小,它的视觉外观并不完全相同),而 MenuController 类型的行为类似于已弃用的 SplitDropDown
因此,为了获得拆分下拉菜单,我在 VSCT 文件中添加了以下菜单声明:

<Menu guid="guidVsCmdSet" id="menuIdSubMenu" type="MenuController" priority="0x0001" toolbarPriorityInBand="0x0001">
    <Parent guid="guidVsCmdSet" id="VsToolbarGroup" />
    <CommandFlag>IconAndText</CommandFlag>
    <CommandFlag>NotInTBList</CommandFlag>
    <Strings>
        <ButtonText>My Button</ButtonText>
        <CommandName>My Button</CommandName>
    </Strings>
</Menu>
并为下拉命令创建了一个新组;该组的父级设置为菜单。
<Group guid="guidVsCmdSet" id="VsSubMenuGroup" priority="0x0001">
    <Parent guid="guidVsCmdSet" id="menuIdSubMenu" />
</Group>
最后,我可以向该组添加普通按钮,这些按钮将显示为菜单项。
<Button guid="guidVsCmdSet" id="cmdIdSubMenuItem1" priority="0x0001" type="Button">
    <Parent guid="guidVsCmdSet" id="VsSubMenuGroup" />
    <CommandFlag>TextOnly</CommandFlag>
    <Strings>
        <CommandName>cmdIdSubMenuItem1</CommandName>
        <ButtonText>Members</ButtonText>
    </Strings>
</Button>

关于sdk - 如何为 *.vsct 文件中的工具栏定义 SplitDropDown 或 MenuButton?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14285622/

10-09 15:50