在XML功能区中以编程方式访问功能区元素

时间:2012-02-19 20:56:48

标签: c# outlook ms-office office-addins

这似乎有几次在这里被问到没有真正的答案:

Accessing Ribbon Controls Programatically in an XML Ribbon

Office Ribbon: How to access a control when the ribbon was created using XML

如果使用功能区xml创建功能区,据我所知,该xml中定义的组件没有编程风险。改变这些组件状态的唯一明显有限的方法是使用像onAction,getContent,getImage事件这样的东西,并且IRibbonControl元素对于操纵有问题的元素提供的很少(更不用说,大多数这些函数只运行一次) ,首次渲染时)。

所以我试图找到一种以编程方式访问这些xml功能区元素的方法。

1 个答案:

答案 0 :(得分:8)

使用功能区XML时,无法以编程方式访问功能区元素。如果要更改功能区控件的状态 - 需要使用IRibbonUI.Invalidate()强制新的布局呈现(可能使用通过回调在渲染时触发不同行为的属性) 。这可能是一件好事,因为如果您要更改多个项目,您可以更好地控制绘图时间。状态。

有关更新功能区UI控件状态的信息,请参阅related SO post

如果您想要以编程方式访问功能区元素,则应使用Ribbon Designer。但是,作为stated on MSDN,设计师并不支持所有自定义。一些speculate that the designer just wraps the Ribbon XML由你引导。

您只需学习callback mechanism utilized by the Ribbon XML - 您无权访问控制树。