主選單項目與工具列按鈕
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,則不會顯示該選單項目的工具列按鈕。
依現行規格,尚未提供可動態變更選單項目顯示字串等內容的方法。