我正在使用Electron.Net包装ASP.Net MVC网页,目前我正在尝试替换默认菜单。我有一个自定义菜单工作,并且代码正在替换菜单。但是当程序使用electronize start运行时,默认菜单会显示,直到我单击最左边的默认项(file)。一旦我点击这个项目,我的菜单就会载入。
我认为这个问题只与菜单交互时运行的MenuController有关,所以我认为我需要实现某种异步功能。我不知道该怎么做,我在网上查了一下,但没有找到多少。
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>发布于 2022-02-03 20:02:45
更新:我只是在第二天重新运行这个程序,现在它开始工作了。¯_(ツ)_/
https://stackoverflow.com/questions/70963414
复制相似问题