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

标签 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 功能区元素。

最佳答案

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

参见 related SO post关于更新功能区 UI 控件状态。

如果你想以编程方式访问功能区元素,你应该使用 Ribbon Designer .然而,作为stated on MSDN , 设计器不支持所有自定义。一些speculate that the designer just wraps the Ribbon XML在引擎盖下为您服务。

你只需要学习 callback mechanism utilized by the Ribbon XML - 没有可供您访问的控制树。

关于c# - 在 XML 功能区中以编程方式访问功能区元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353151/

相关文章:

c# - 在 C# 中获取两个列表之间的不同列表

c# - 递归到尾递归

Office365 的 Outlook.Application.CreateItem 表示 : The operation failed

sql - MS Outlook 使用 JAVA 工作

c# - 当用户关闭主窗口时,PowerPoint 进程不会关闭

c# - 无法在 Aspx 页面中从 Codebehind 运行 Javascript 代码

c# - 如何在 HtmlAgilityPack 中替换/添加根元素?

vba - 是否可以在 Excel VBA 中读出特定主题的 Outlook?

vba - Outlook 约会 - 如何更改开始时间下拉列表中的项目

Excel 给出错误的平均值