| title | MenuBar |
|---|
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:
- enabled state is derived from
Command.CanExecuteFor(...) - the shortcut label is derived from
Command.Gesture/Command.SequenceunlessMenuItem.Shortcutis explicitly set
Menus 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
});- Default alignment:
HorizontalAlignment = Align.Start,VerticalAlignment = Align.Start
