Ribbon XML 下拉控件默认选择

Ribbon XML dropdown control default selection

我是 VSTO 的新手,我正在尝试创建一个带有一些简单控件的 Excel 功能区。我知道在 Visual Studio 中有两种方法可以做到这一点。功能区 XML 和功能区设计器,据我所知,大多数人更喜欢 XML 方法,因为它提供了更大的灵活性。

我尝试了两种方法来创建带有选项卡和下拉菜单的简单功能区。通过功能区设计器,我可以看到生成的 C# "code behind",我可以使用它在运行时更改控件。此外,下拉列表自动默认为第一项,但使用生成的 C# 对象,我可以将其设置为我想要的任何内容。

我尝试用 XML 方法做同样的事情,这里是 XML:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon>
    <tabs>
      <tab id="myTab" label = "My Tab" >
        <group id="MyGroup" label="My Group" >
          <dropDown id="dropDown" label="Items">
            <item id="item1" label="Item 1" />
            <item id="item2" label="Item 2" />
            <item id="item3" label="Item 3" />
          </dropDown>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

但是组合框没有默认项,它只是空的。而且没有我可以使用的可见 "code behind" 或数据绑定?如何为此控件设置默认项(例如 id=item1)。

图片清晰

没有默认项目:

有默认项:

提前致谢

功能区中定义的任何回调 XML 将在功能区加载时自动执行(唯一需要特别初始化的是对功能区本身的引用)。因此,如果您想使用其 ID 指定默认值,请在下拉列表定义中包含该回调。或者,您可以按索引 select。

分配给 getSelectedItemID(或 getSelectedItemIndex)的字符串是应该执行的过程的名称。

密切关注功能区 call-backs 的 方法签名 。对于 C# getSelectedItemId 需要 return 一个 stringgetSelectedItemIndex 一个 int。您将在文章系列的第 3 部分中找到方法签名列表 Customizing the 2007 Office Fluent Ribbon for Developers

     // Ribbon1.xml
      <dropDown id ="dd1" getSelectedItemID="InitializeDropdown" >
        <item id="ddItem1" label="Item 1"/>
        <item id="ddItem2" label="Item 2"/>
      </dropDown>

    // Ribbon1.cs
    public void Ribbon_Load(Office.IRibbonUI ribbonX)
    {
        ribbon = ribbonX;
    }

    //will be executed automatically when Ribbon_Load runs
    public string InitializeDropdown(Office.IRibbonControl ctl)
    {
        return "ddItem2";
    }