2011-05-10 75 views
0

我目前正在潜入Word 2010的VSTO插件开发和功能区自定义。此工作正常,但有一个缺点:功能区自定义应该只发生在某些文档,但IRibbonExtensibility.GetCustomUI()方法显然称为在加载任何文档之前启动应用程序。我怎样才能达到这个要求?如何在VSTO4加载项中按需定制Word 2010功能区?

回答

1

你说得对,它只被调用一次。关于你唯一的选择(以及对我来说合理的工作),就是先在你的功能区中定义一切,然后将VISIBLE属性设置为false或true,具体取决于加载的doc或加载中发生的任何其他操作。

+0

听起来很有希望。这是否也适用于禁用(不隐藏)内部命令或使用startFromScratch? – 2011-05-10 15:33:15

+0

从msdn页面,我认为这不适用于StartFromScratch(请参阅“备注”部分):http://msdn.microsoft.com/en-us/library/microsoft.office.tools.ribbon.officeribbon。 startfromscratch.aspx – Mathias 2011-05-12 02:58:05

+0

这完全有可能。我还没有需要从头开始使用。这基本上关闭了所有内部定义的色带,不是吗?如果是这样的话,那意味着它需要更多的工作来“重新定义”已经由Word定义的所有元素(更不用说使Word看起来与股票非常不同,我不确定这通常是好事,尽管我想在非常有限的情况下,你可能想要这样做。 – DarinH 2011-05-12 14:22:38

0

@drventure是正确的,你必须先定义你的色带,然后显示/隐藏功能区上的不同按钮。

尽管是我一直在研究的项目中的一些功能,VSTO Contrib,它允许您创建一个ViewModel,它将为每个打开的文档创建,它会发现并连线丝带xml按照惯例。

就你而言,这意味着你可以将ribbon按钮的可见性绑定到视图模型上的属性,并且不必担心保持窗口/文档同步。阅读http://jake.ginnivan.net/vsto-contrib/ribbon-factory,看看它是否会帮助你解决你的问题,堆少代码=)

相关问题