我发现自己在编写 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>
所有包含的控件都需要 new s 的事实加剧了这种情况Id
- 并且需要调整背后的代码以响应这些新控件。
问题:
有没有办法去重复此代码并从内部(例如,
contextMenu
s、ribbon
s 等)简单地引用控制组(实现一次)?
编辑 1:更多用例
我开发了几个自定义用户函数,可以应用于形状、表格、图表等。我目前将这些工具包含在选项卡集中TabSetDrawingTools
。但是,我还需要将它们包含在表格和图表的相应选项卡中。
从我现在看到的情况来看,只有两种选择:
如上所述,完全复制和粘贴所有代码 - 这与任何类型的最佳实践背道而驰
以某种方式实现我的“自己的”功能区 XML 标签。然后,我阅读自己的 XML,查找诸如之类的标签
<customControlGroup id="myId" />
,然后以编程方式生成最终的 Ribbon XML 并将其传递给 Office。也就是说,要实现看似如此简单的事情听起来很麻烦。
编辑 2:<control />
不支持的使用
功能区 XML 提供<control />
标签,允许您复制/克隆内置控件。但是,根据文档(并且已经尝试过),它不适用于自定义控件和控制组(例如,通过引用它们的id
or idQ
)。