主選單項目與工具列按鈕

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