有没有办法在运行时访问function区(XML)?

我正在使用Word 2007应用级加载项。 到目前为止,除了将加载项的Ribbon界面转换为XML之外,我没有遇到过重大障碍。 我必须使用Ribbon XML,因为我正在处理的function只能通过这种方式完成。 问题是通过切换到Ribbon XML,我无法再通过Globals.Ribbons在运行时访问该接口。 此链接http://msdn.microsoft.com/en-us/library/bb772088.aspx可以很好地解释如何访问可视设计器function区,但它完全忽略了XMLfunction区案例。 具体来说,我需要能够访问一些视觉控件,如标签。 我怎样才能做到这一点?

Globals.Ribbons是一个VSTO设计器function,如果您使用RibbonXML,那么您没有此function。 设计师实际上做的是它将为Office创建function区xml,然后当办公室进行回调时,VSTO将为该上下文(文档)引发适当的事件处理程序。 因为您正在使用RibbonXML,所以您完全绕过了VSTO Ribbon设计器支持(我更喜欢这种方式,它更快,您可以更好地控制)。

使用function区XML,您必须为您的标签注册一个onLoad回调,然后Office会传递一个IRibbonControl,它将成为标签,您可以做的事情有限。 如果你想更改文本,那么你必须注册一个getText回调,然后使该function区控件无效,这将导致重新评估getText回调。

有关实际想要实现的内容的更多信息将非常方便=)我有一种感觉,我的VSTO contrib项目也将使您的生活更轻松,因为它在使用function区xml时为您提供了许多优秀的Ribbon Designerfunction。 但是让我知道你想做什么,我可以给你更多信息。

干杯,杰克

使用Ribbon XML时,我试过这个,但我无法从Globals.Ribbons访问Ribbon1属性..属性简单不存在..

但是,我提出了另一种解决方案,它基本上与正确的类型转换有关。

在ThisAddIn.cs中:

private Microsoft.Office.Core.IRibbonExtensibility ribbonObj; protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() { ribbonObj = new Ribbon1(this); return ribbonObj; } private void ThisAddIn_Startup(object sender, System.EventArgs e) { // Calling the public method TEST() in Ribbon1.cs //MyNameSpace is the namespace used in your project ie., your project name ((MyNameSpace.Ribbon1)ribbonObj).TEST(); // Calling the public variable flag in Ribbon1.cs ((MyNameSpace.Ribbon1)ribbonObj).flag; } 

您何时尝试访问Globals.ribbons?

我记得,直到非常接近Word的启动阶段结束时才会填充它。

如果您尝试过早访问它,则不会定义任何色带。