MenuBar provides application chrome with menus and keyboard navigation.
Menus are implemented as popups and require a fullscreen Terminal.Run(...) app.
Use MenuItem to build menus and submenus. Menu interaction supports keyboard and mouse.
Menu items can be backed by a Command:
using XenoAtom.Terminal;
using XenoAtom.Terminal.UI.Commands;
using XenoAtom.Terminal.UI.Controls;
using XenoAtom.Terminal.UI.Input;
var open = new Command
{
Id = "App.Open",
LabelMarkup = "[primary]Open[/]",
Gesture = new KeyGesture(TerminalChar.CtrlO, TerminalModifiers.Ctrl),
Presentation = CommandPresentation.Menu,
Execute = _ => { /* ... */ },
};
var menuBar = new MenuBar();
menuBar.Items.Add(new MenuItem("File")
.Items(
new MenuItem("Open", open),
MenuItem.Separator(),
new MenuItem("Exit", () => { /* ... */ })));
When MenuItem.Command is set:
Command.CanExecuteFor(...)Command.Gesture / Command.Sequence unless MenuItem.Shortcut is explicitly setMenus are displayed in Popup windows. You can customize the chrome around the menu list (e.g. add/remove a border) by
overriding MenuListStyle.PopupTemplateFactory via the visual environment:
using XenoAtom.Terminal.UI.Styling;
menuBar.Style(MenuListStyle.Default with
{
PopupTemplateFactory = null, // no wrapper
});
HorizontalAlignment = Align.Start, VerticalAlignment = Align.Start