主菜单项及工具栏按钮
Extension 可以在主菜单中添加用于 Extension 的菜单项。菜单项也可以通过子菜单进行分层。
此外,对于每个菜单项,也可以添加对应的工具栏按钮。(仅添加工具栏按钮的操作不被支持)
选择菜单项或点击工具栏按钮时,会调用 Extension 的命令。被调用的命令在菜单项和工具栏按钮之间没有区别。
不过,可以区分命令是否是通过工具栏按钮调用的。
要使用此扩展点,需要创建并导出实现了接口 IRCXMainMenuItemProvider 的类。
[Export(typeof(IRCXMainMenuItemProvider))]
public class MainMenuItem : IRCXMainMenuItemProvider
{
/// <inheritdoc />
public string Id => Main.CommonId;
/// <inheritdoc />
public string MenuItemId => "MyExtension.MainMenuItem";
/// <inheritdoc />
public IRCXMainMenuItemProvider.MenuItem MainMenuRootItem
{
get
{
return new IRCXMainMenuItemProvider.MenuItem
{
Caption = new RCXCaption(Main.CommonId, Caption.MainMenu),
Icon = Main.CommonIcon,
CommandName = "Main",
ToolTip = new RCXCaption(Main.CommonId, Caption.MainMenu),
};
}
}
/// <inheritdoc />
public IRCXMainMenuItemProvider.TopLevelMenu TopLevel => IRCXMainMenuItemProvider.TopLevelMenu.Default;
/// <inheritdoc />
public Task ExecuteMainMenuItemCommandAsync(
string commandName,
bool fromToolBar
)
{
// (Code here)
return Task.CompletedTask;
}
}
如果包含多个菜单项,请注意 MenuItemId 不要与其他项重复。
以下是包含子菜单的示例。
public IRCXMainMenuItemProvider.MenuItem MainMenuRootItem
{
get
{
return new IRCXMainMenuItemProvider.MenuItem
{
Caption = new RCXCaption(Main.CommonId, Caption.MainMenu),
Icon = Icon,
CommandName = "Main",
Children =
[
new()
{
Caption = new RCXCaption(Main.CommonId, Caption.MainMenu_Sub1),
Icon = Icon,
CommandName = "Sub1",
ToolTip = new RCXCaption(Main.CommonId, Caption.ToolTip_Sub1),
},
new()
{
Caption = new RCXCaption(Main.CommonId, Caption.MainMenu_Sub2),
Icon = Icon,
CommandName = "Sub2",
ToolTip = null,
},
]
};
}
}
将 ToolTip 设置为 null 时,该菜单项对应的工具栏按钮不会显示。
当前规范下,没有提供动态更改菜单项显示字符串等内容的方法。