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 一个 string
; getSelectedItemIndex
一个 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";
}
我是 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 一个 string
; getSelectedItemIndex
一个 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";
}