为什么我的CreateRibbonExtensibilityObject方法没有被调用?

4

你好,我一直在使用MS Word插件(Visual Studio 2010,.NET 3.5)进行修改功能区的两种技术:Microsoft.Office.Tools.Ribbon.OfficeRibbon和Microsoft.Office.Core.IRibbonExtensibility。我希望在我的插件的CreateRibbonExtensibilityObject中在这两种技术之间切换,但不知何故现在它没有被调用。文档说,如果插件实现了CreateRibbonExtensibilityObject,它将被调用。当我创建一个新项目来测试这个功能时,它是有效的。我不想放弃我的现有项目。有什么建议吗?谢谢。

1个回答

1

它们不是真正可以互换的。问题在于,如果使用OfficeRibbon对象(非常好用,具有良好的设计等),则IT会实现createribbonextensibility功能,您没有机会拦截它。

去年我写了一篇博客文章,讨论了如何从VSTO 3插件中添加对新的Office 2010“后台视图”的支持的问题(VSTO 3不支持后台视图,但是仍然可以做到,您基本上使用相同的技术交换实现功能)。

真正的问题是,为什么要费这个劲呢?如果您已经完成了支持IExtensibility2的工作(然后具有在XML中完全定义自己的ribbon对象的能力),那么就没有太大需要使用OfficeRibbon。如果您正在使用officeribbon控件,则可以通过指定XML直接完成jsut about所有您可以做的事情,因此为什么要受苦呢?

博客文章在这里 http://www.vbfengshui.com/integrating-with-the-new-office-backstage-from-a-vsto-3-addin/


1
此外,使用 IExtensibility2 接口可以使您的插件针对任何 Office 应用程序进行定位,而不仅仅是 Word 或 Excel。我编写了一个办公元数据清除器,它以这种方式工作,单个 DLL,支持从 2000 年到 2010 年的所有 Office 版本,以及包括 Word、Excel、PPT 和 Outlook 在内的所有主要 Office 应用程序。只需处理一个 DLL 进行分发和调试非常方便。 - DarinH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接