【发布时间】:2017-06-06 22:22:38
【问题描述】:
我发现自己在编写 RibbonXML UI 时重复了很多 XML。
以下面的 contextMenu 为例
<contextMenu idMso="ContextMenuObjectsGroup">
<!-- Lots of XML describing the items -->
</contextMenu>
现在,我还希望相同的项目出现在ContextMenuShape 菜单中,所以我发现自己在重复上面的内容:
<contextMenu idMso="ContextMenuShape">
<!-- Lots of XML describing the items -->
</contextMenu>
所有包含的控件都需要新的Ids,并且需要调整背后的代码以响应这些新控件,这一事实加剧了这种情况。
问题:
有没有办法去重复此代码并简单地从内部引用控制组(实现一次),例如
contextMenus、ribbons 等等?
编辑 1:更多用例
我开发了几个自定义用户函数,可以应用于形状、表格、图表等。我目前将这些工具包含在标签集TabSetDrawingTools 中。但是,我还需要将它们包含在表格和图表的相应选项卡中。
从我现在看到的情况来看,只有两种选择:
如上所述,完全复制并粘贴所有代码 - 这与任何类型的最佳实践都背道而驰
以某种方式实现我的“自己的”功能区 XML 标记。然后,我阅读自己的 XML,查找诸如
<customControlGroup id="myId" />之类的标签,然后以编程方式生成最终的 Ribbon XML 并将其传递给 Office。也就是说,要实现看似如此简单的事情听起来很麻烦。
编辑 2:不支持使用 <control />
Ribbon XML 提供<control /> 标签,允许您复制/克隆内置控件。但是,根据documentation(并且已经尝试过),它不适用于自定义控件和控件组(例如,通过引用它们的id 或idQ)。
【问题讨论】:
标签: vsto office-interop ribbon ribbon-control ribbonx