我是VSTO的新手,我尝试使用一些简单的控件创建Excel功能区。我知道有两种方法可以在Visual Studio中执行此操作。功能区XML和功能区设计器,从我读过的内容来看,大多数人更喜欢XML方法,因为它提供了更大的灵活性。
我尝试了两种创建带有标签和下拉列表的简单功能区的方法。使用Ribbon设计器,我可以看到生成的C#"代码背后"我可以用它来改变运行时的控件。此外,下拉列表会自动默认为第一个项目,但使用生成的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>
但有了这个,组合框没有得到默认项目,它只是空的。并且没有可见的&#34;代码背后&#34;或我可以使用的数据绑定?如何为此控件设置默认项目(例如id = item1)。
图片清晰
无默认项目:
有默认项目:
提前谢谢
答案 0 :(得分:1)
Ribbon Ribbon中定义的任何回调都将在Ribbon加载时自动执行(唯一需要特别初始化的是对Ribbon本身的引用)。因此,如果要使用其ID指定默认值,请在下拉列表定义中包含该回调。或者,您可以按索引进行选择。
分配给getSelectedItemID
(或getSelectedItemIndex
)的字符串是应该执行的过程的名称。
密切关注功能区回拨的方法签名。对于C#getSelectedItemId
,需要返回string
; getSelectedItemIndex
int
。您可以在文章系列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";
}