sdk - 如何为 *.vsct 文件中的工具栏定义 SplitDropDown 或 MenuButton?

标签 sdk visual-studio-2012 vsx visual-studio-extensions vsix

我按照 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的定义是什么吗?按钮,有一个子菜单,会是什么样子?

最佳答案

看来SplitDropDownMenuButton Visual Studio IDE 不再支持这些类型(至少是 v11,但我还没有在早期版本上测试它。也许我错了,但我无法将这些按钮放入我的工具栏中)。相反,类型为 Menu 的菜单或 MenuController可以使用。型号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/

相关文章:

c# - 你能以编程方式在 C# 中的 ProjectItem 上执行 'Run Custom Tool' 吗?

c++ - 在 C++ 中以编程方式创建 Excel 文件

android - 在 Prespetive、SDK Manager 和 AVD Manager 中看不到 Android。

visual-studio-2012 - Visual Studio 2012 RC Diff 实用程序是否仅进行比较?

wcf - 是否可以从VS2010插件刷新WCF服务引用?

.net - 将项目附加到解决方案资源管理器中解决方案或项目节点的添加菜单

ios - SDK更新后,UserCannotBeAlteredWithoutSessionError

java - 在sdk版本中进行编译需要什么

c# - 无法添加 SQLBASEUTIL.dll (Gupta) 作为对 C# 的引用 - VStudio 2012

c# - 没有 ASP.NET MVC 的捆绑和缩小