0

我正在使用 Electron.Net 包装一个 ASP.Net MVC 网页,我目前正在尝试替换默认菜单。我有一个自定义菜单正在工作,代码正在替换菜单。但是当使用 运行程序时electronize start,会显示默认菜单,直到我单击最左侧的默认项 ( file)。一旦我单击该项目,我的菜单就会加载。

我认为这个问题与仅在与菜单交互时运行的 MenuController 有关,所以我认为我需要实现某种异步功能。我不知道该怎么做,我在网上查过,但没有找到太多。

菜单控制器.cs

public IActionResult Index()
        {
            if (HybridSupport.IsElectronActive)
            {
                MenuItem[] menu = new MenuItem[]
                {
                    new MenuItem
                    {
                        Label = "File",
                        Submenu = new MenuItem[]
                        {
                            new MenuItem
                            {
                                Label = "Open",
                                Accelerator = "CmdOrCtrl+O"
                            },
                            new MenuItem
                            {
                                Label = "Save",
                                Accelerator = "CmdOrCtrl+S"
                            },
                            new MenuItem
                            {
                                Label = "Save As",
                                Accelerator = "CmdorCtrl+Shift+S"
                            }
                        }
                    },

                    new MenuItem
                    {
                        Label = "Edit",
                        Submenu = new MenuItem[]
                        {
                            new MenuItem
                            {
                                Label = "Preferences"
                            }
                        }
                    },

                    new MenuItem
                    {
                        Label = "View",
                        Submenu = new MenuItem[]
                        {
                            new MenuItem
                            {
                                Label = "TODO"
                            },

                            new MenuItem
                            {
                                Label = "Reload",
                                Click = () =>
                                {
                                    Electron.WindowManager.BrowserWindows.ToList().ForEach(BrowserWindow =>
                                    {
                                        if (BrowserWindow.Id != 1)
                                            BrowserWindow.Close();

                                        else
                                            BrowserWindow.Reload();
                                    });
                                }
                            },

                            new MenuItem
                            {
                                Label = "Toggle Full Screen",
                                Accelerator = "CmdOrCtrl+F",
                                Click = async () =>
                                {
                                    bool isFullScreen = await Electron.WindowManager.BrowserWindows.First().IsFullScreenAsync();
                                    Electron.WindowManager.BrowserWindows.First().SetFullScreen(!isFullScreen);
                                }
                            },

                            new MenuItem
                            {
                                Type = MenuType.separator
                            },

                            new MenuItem
                            {
                                Label = "Open Developer Tools",
                                Accelerator = "CmdOrCtrl+Shift+I",
                                Click = () =>
                                {
                                    Electron.WindowManager.BrowserWindows.First().WebContents.OpenDevTools();
                                }
                            }
                        }
                    },

                    new MenuItem
                    {
                        Label = "Navigate",
                        Submenu = new MenuItem[]
                        {
                            new MenuItem
                            {
                                Label = "Home",
                                Submenu = new MenuItem[]
                                {
                                    new MenuItem
                                    {
                                        Label = "Home",
                                        Click = () =>
                                        {
                                            Electron.WindowManager.BrowserWindows.First().LoadURL($"http://localhost:{BridgeSettings.WebPort}/");
                                        }
                                    },

                                    new MenuItem
                                    {
                                        Label = "Privacy",
                                        Click = () =>
                                        {
                                            Electron.WindowManager.BrowserWindows.First().LoadURL($"http://localhost:{BridgeSettings.WebPort}/Privacy");
                                        }
                                    }
                                }
                            },

                            new MenuItem
                            {
                                Type = MenuType.separator
                            },

                            new MenuItem
                            {
                                Label = "Editor",
                                Submenu = new MenuItem[]
                                {
                                    new MenuItem
                                    {
                                        Label = "Editor",
                                        Click = () =>
                                        {
                                            Electron.WindowManager.BrowserWindows.First().LoadURL($"http://localhost:{BridgeSettings.WebPort}/Editor/");
                                        }
                                    }
                                }
                            }
                        }
                    }
                };

                Electron.Menu.SetApplicationMenu(menu);
            }

            return Ok();
        }

视图/编辑器/Index.cshtml

@model CircuitSharp.Models.EditorModel

@{
    Layout = null;
}
<!--
    EDITOR INDEX PAGE
-->
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Editor</title>

    <!-- 
        IMPORTING THE CUSTOM MENU
    -->
    <link rel="import" href="Menu" />
</head>
<body>



@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
</body>
</html>

4

1 回答 1

0

更新:我只是在第二天重新运行了该程序,它现在可以工作了。¯_(ツ)_/¯

于 2022-02-03T20:02:45.330 回答