如何通过编程禁用按钮或添加/删除下拉菜单中的项,使用Office Ribbon UI

3
我写了一个简单的C++ COM Office插件,加载了一个ribbon XML定义并显示一个简单的ribbon标签页。它包括一些按钮和一个下拉列表。我可以很好地处理按钮单击事件和组合框选择更改事件。
现在我想根据活动文档中的更改更新ribbon UI,以便禁用某些按钮并从下拉列表中添加/删除某些项目。
我已经搜索了很多但没能找到控制这个的方法。我是否漏看了什么非常明显的东西?我如何从代码中的任何位置更改按钮的启用状态?
1个回答

4

从我所见,使用Windows Ribbon控件:额外的按钮必须在设计时在XML标记中指定。在运行时,您可以调用SetModes()来指定哪些小部件集会显示在功能区中。

像这样:

  <Application.Views>
    <Ribbon>
      <Ribbon.Tabs>
        <Tab CommandName="cmdTabMain" ApplicationModes="0,1">
          <Group CommandName="cmdGroupCommon" 
                 SizeDefinition="ThreeButtons" 
                 ApplicationModes="0,1">
            <Button CommandName="cmdButtonNew" />
            <Button CommandName="cmdButtonOpen" />
            <Button CommandName="cmdButtonSave" />
          </Group>
          <Group CommandName="cmdGroupSimple" 
                 SizeDefinition="TwoButtons" 
                 ApplicationModes="0">
            <Button CommandName="cmdButtonSwitchToAdvanced" />
            <Button CommandName="cmdButtonDropA" />
          </Group>
          <Group CommandName="cmdGroupAdvanced" 
                 SizeDefinition="FourButtons" 
                 ApplicationModes="1">
            <Button CommandName="cmdButtonSwitchToSimple" />
            <Button CommandName="cmdButtonDropA" />
            <Button CommandName="cmdButtonDropB" />
            <Button CommandName="cmdButtonDropC" />
          </Group>
        </Tab>
      </Ribbon.Tabs>
    </Ribbon>
  </Application.Views>

然后(在C#中),在单击处理程序中,您可以使用_ribbon.SetModes(1)_ribbon.SetModes(0)

enter image description here


谢谢!你真的很努力,但这不是我想要的。我特别需要一个C++解决方案。我的问题是我不确定如何获取特定功能区中某个按钮的IButton接口,并调用其IButton->Enable(false)方法。希望现在更清楚了。 - wpfwannabe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接