首页 > 解决方案 > 加载功能区后更改功能区菜单属性

问题描述

我构建了一个 VSTO(使用 Ribbon Designer 制作,不使用 Ribbon XML)。是否可以从 更改选项卡的属性(如标签)Ribbon1.cs

我什至无法更改功能区标题:

    private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
    {
        myRibbon.Label = "something";
    }

标签: ms-officevstoribbonx

解决方案


动态执行此操作的方法是使用回调。

在您的功能区 XML 中:

<tab id="myTabID" getLabel="myCallback">
  ....
</tab>

在您的功能区代码中:

public string myCallback(IRibbonControl control)
{
    switch (control.Id)
    {
        case "myTabID":
            return "My Label";
        case "whatever else":
        default:
            return "n/a";
    }
}

只要显示选项卡,回调就会执行,因此可能在启动时。当您真正想要更改显示的内容时,您必须使其无效:

ribbon.Invalidate();
// or
ribbon.InvalidateControl(id);

推荐阅读