如何在加载特定文档时禁用 Word 的内置功能区选项卡?
How can I disable Word's built-in Ribbon Tabs when a specific document is loaded?
我现在正在使用以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<commands>
<command idMso="Font" enabled="false"/>
<command idMso="AlignLeft" enabled="false"/>
<command idMso="AlignCenter" enabled="false"/>
<command idMso="AlignRight" enabled="false"/>
</commands>
等等,但这显然完全禁用了按钮。我现在想限制我的用户在加载 特定 文档时使用某些内置的 Word 控件,并让他们在其余时间自由地做任何事情。我尝试使用:
<command idMso="FontSize" getEnabled="checkDisable"/>
其中 checkDisable
检查打开的文档。然后在该文档中搜索一个字符串(这就是我知道我想禁用按钮的方式),但 checkDisable 回调在文档实际加载之前触发。
我能否以某种方式直接禁用代码隐藏中的特定按钮,而不是仅通过 XML?如果可以的话,我可以禁用 DocumentLoaded 事件上的按钮。
欢迎任何建议,我已经用头撞墙谷歌搜索了好几个小时。
你走对了路。您需要使用回调而不是属性。但是 Office 会缓存这些值,并且不会在您需要时每次都调用回调。相反,要刷新 UI(强制 Office 应用程序调用回调),您需要使用 Invalidate or InvalidateControl methods of the IRibbonUI interface. See Overview of the IRibbonUI Object 获取更多信息。
例如,当您在宿主应用程序中打开一个新文档时,会触发 Open 事件。您可以查看文档并调用 Invalidate 方法(如果需要)以强制主机应用程序调用您的回调,从而刷新 UI.
我现在正在使用以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<commands>
<command idMso="Font" enabled="false"/>
<command idMso="AlignLeft" enabled="false"/>
<command idMso="AlignCenter" enabled="false"/>
<command idMso="AlignRight" enabled="false"/>
</commands>
等等,但这显然完全禁用了按钮。我现在想限制我的用户在加载 特定 文档时使用某些内置的 Word 控件,并让他们在其余时间自由地做任何事情。我尝试使用:
<command idMso="FontSize" getEnabled="checkDisable"/>
其中 checkDisable
检查打开的文档。然后在该文档中搜索一个字符串(这就是我知道我想禁用按钮的方式),但 checkDisable 回调在文档实际加载之前触发。
我能否以某种方式直接禁用代码隐藏中的特定按钮,而不是仅通过 XML?如果可以的话,我可以禁用 DocumentLoaded 事件上的按钮。
欢迎任何建议,我已经用头撞墙谷歌搜索了好几个小时。
你走对了路。您需要使用回调而不是属性。但是 Office 会缓存这些值,并且不会在您需要时每次都调用回调。相反,要刷新 UI(强制 Office 应用程序调用回调),您需要使用 Invalidate or InvalidateControl methods of the IRibbonUI interface. See Overview of the IRibbonUI Object 获取更多信息。
例如,当您在宿主应用程序中打开一个新文档时,会触发 Open 事件。您可以查看文档并调用 Invalidate 方法(如果需要)以强制主机应用程序调用您的回调,从而刷新 UI.