public DynamicMenuBarSample(ustring title) : base(title) { DataContext = new DynamicMenuItemModel(); var _frmMenu = new FrameView("Menus:") { Y = 7, Width = Dim.Percent(50), Height = Dim.Fill() }; var _btnAddMenuBar = new Button("Add a MenuBar") { Y = 1, }; _frmMenu.Add(_btnAddMenuBar); var _btnMenuBarUp = new Button("^") { X = Pos.Center() }; _frmMenu.Add(_btnMenuBarUp); var _btnMenuBarDown = new Button("v") { X = Pos.Center(), Y = Pos.Bottom(_btnMenuBarUp) }; _frmMenu.Add(_btnMenuBarDown); var _btnRemoveMenuBar = new Button("Remove a MenuBar") { Y = 1 }; _btnRemoveMenuBar.X = Pos.AnchorEnd() - (Pos.Right(_btnRemoveMenuBar) - Pos.Left(_btnRemoveMenuBar)); _frmMenu.Add(_btnRemoveMenuBar); var _btnPrevious = new Button("<") { X = Pos.Left(_btnAddMenuBar), Y = Pos.Top(_btnAddMenuBar) + 2 }; _frmMenu.Add(_btnPrevious); var _btnAdd = new Button(" Add ") { Y = Pos.Top(_btnPrevious) + 2, }; _btnAdd.X = Pos.AnchorEnd() - (Pos.Right(_btnAdd) - Pos.Left(_btnAdd)); _frmMenu.Add(_btnAdd); var _btnNext = new Button(">") { X = Pos.X(_btnAdd), Y = Pos.Top(_btnPrevious), }; _frmMenu.Add(_btnNext); var _lblMenuBar = new Label() { ColorScheme = Colors.Dialog, TextAlignment = TextAlignment.Centered, X = Pos.Right(_btnPrevious) + 1, Y = Pos.Top(_btnPrevious), Width = Dim.Fill() - Dim.Width(_btnAdd) - 1, Height = 1 }; _frmMenu.Add(_lblMenuBar); _lblMenuBar.WantMousePositionReports = true; _lblMenuBar.CanFocus = true; var _lblParent = new Label() { TextAlignment = TextAlignment.Centered, X = Pos.Right(_btnPrevious) + 1, Y = Pos.Top(_btnPrevious) + 1, Width = Dim.Fill() - Dim.Width(_btnAdd) - 1 }; _frmMenu.Add(_lblParent); var _btnPreviowsParent = new Button("..") { X = Pos.Left(_btnAddMenuBar), Y = Pos.Top(_btnPrevious) + 1 }; _frmMenu.Add(_btnPreviowsParent); var _lstMenus = new ListView(new List <DynamicMenuItemList> ()) { ColorScheme = Colors.Dialog, X = Pos.Right(_btnPrevious) + 1, Y = Pos.Top(_btnPrevious) + 2, Width = _lblMenuBar.Width, Height = Dim.Fill(), }; _frmMenu.Add(_lstMenus); _lblMenuBar.TabIndex = _btnPrevious.TabIndex + 1; _lstMenus.TabIndex = _lblMenuBar.TabIndex + 1; _btnNext.TabIndex = _lstMenus.TabIndex + 1; _btnAdd.TabIndex = _btnNext.TabIndex + 1; var _btnRemove = new Button("Remove") { X = Pos.Left(_btnAdd), Y = Pos.Top(_btnAdd) + 1 }; _frmMenu.Add(_btnRemove); var _btnUp = new Button("^") { X = Pos.Right(_lstMenus) + 2, Y = Pos.Top(_btnRemove) + 2 }; _frmMenu.Add(_btnUp); var _btnDown = new Button("v") { X = Pos.Right(_lstMenus) + 2, Y = Pos.Top(_btnUp) + 1 }; _frmMenu.Add(_btnDown); Add(_frmMenu); var _frmMenuDetails = new FrameView("Menu Details:") { X = Pos.Right(_frmMenu), Y = Pos.Top(_frmMenu), Width = Dim.Fill(), Height = Dim.Fill() }; var _lblTitle = new Label("Title:") { Y = 1 }; _frmMenuDetails.Add(_lblTitle); var _txtTitle = new TextField() { X = Pos.Right(_lblTitle) + 2, Y = Pos.Top(_lblTitle), Width = Dim.Fill() }; _frmMenuDetails.Add(_txtTitle); var _lblHelp = new Label("Help:") { X = Pos.Left(_lblTitle), Y = Pos.Bottom(_lblTitle) + 1 }; _frmMenuDetails.Add(_lblHelp); var _txtHelp = new TextField() { X = Pos.Left(_txtTitle), Y = Pos.Top(_lblHelp), Width = Dim.Fill() }; _frmMenuDetails.Add(_txtHelp); var _lblAction = new Label("Action:") { X = Pos.Left(_lblTitle), Y = Pos.Bottom(_lblHelp) + 1 }; _frmMenuDetails.Add(_lblAction); var _txtAction = new TextView() { ColorScheme = Colors.Dialog, X = Pos.Left(_txtTitle), Y = Pos.Top(_lblAction), Width = Dim.Fill(), Height = 5 }; _frmMenuDetails.Add(_txtAction); var _ckbIsTopLevel = new CheckBox("IsTopLevel") { X = Pos.Left(_lblTitle), Y = Pos.Bottom(_lblAction) + 5 }; _frmMenuDetails.Add(_ckbIsTopLevel); var _ckbSubMenu = new CheckBox("Has sub-menus") { X = Pos.Left(_lblTitle), Y = Pos.Bottom(_ckbIsTopLevel) }; _frmMenuDetails.Add(_ckbSubMenu); _ckbIsTopLevel.Toggled = (e) => { if (_ckbIsTopLevel.Checked && _currentEditMenuBarItem.Parent != null) { MessageBox.ErrorQuery("Invalid IsTopLevel", "Only menu bar can have top level menu item!", "Ok"); _ckbIsTopLevel.Checked = false; return; } if (_ckbIsTopLevel.Checked) { _ckbSubMenu.Checked = false; _ckbSubMenu.SetNeedsDisplay(); _txtAction.ReadOnly = false; } else { _txtAction.ReadOnly = true; } }; _ckbSubMenu.Toggled = (e) => { if (_ckbSubMenu.Checked) { _ckbIsTopLevel.Checked = false; _ckbIsTopLevel.SetNeedsDisplay(); _txtAction.ReadOnly = true; } else { _txtAction.ReadOnly = false; } }; var _rChkLabels = new ustring [] { "NoCheck", "Checked", "Radio" }; var _rbChkStyle = new RadioGroup(_rChkLabels) { X = Pos.Left(_lblTitle), Y = Pos.Bottom(_ckbSubMenu) + 1, }; _frmMenuDetails.Add(_rbChkStyle); var _btnOk = new Button("Ok") { X = Pos.Left(_lblTitle) + 20, Y = Pos.Bottom(_rbChkStyle) + 1, Clicked = () => { if (ustring.IsNullOrEmpty(_txtTitle.Text) && _currentEditMenuBarItem != null) { MessageBox.ErrorQuery("Invalid title", "Must enter a valid title!.", "Ok"); } else if (_currentEditMenuBarItem != null) { var menuItem = new DynamicMenuItem(_txtTitle.Text, _txtHelp.Text, _txtAction.Text, _ckbIsTopLevel != null ? _ckbIsTopLevel.Checked : false, _ckbSubMenu != null ? _ckbSubMenu.Checked : false, _rbChkStyle.SelectedItem == 0 ? MenuItemCheckStyle.NoCheck : _rbChkStyle.SelectedItem == 1 ? MenuItemCheckStyle.Checked : MenuItemCheckStyle.Radio); UpdateMenuItem(_currentEditMenuBarItem, menuItem, _lstMenus.SelectedItem); } } }; _frmMenuDetails.Add(_btnOk); var _btnCancel = new Button("Cancel") { X = Pos.Right(_btnOk) + 3, Y = Pos.Top(_btnOk), Clicked = () => { _txtTitle.Text = ustring.Empty; } }; _frmMenuDetails.Add(_btnCancel); Add(_frmMenuDetails); _btnAdd.Clicked = () => { if (MenuBar == null) { MessageBox.ErrorQuery("Menu Bar Error", "Must add a MenuBar first!", "Ok"); _btnAddMenuBar.SetFocus(); return; } var item = EnterMenuItem(_currentMenuBarItem); if (ustring.IsNullOrEmpty(item.title)) { return; } if (!(_currentMenuBarItem is MenuBarItem)) { var parent = _currentMenuBarItem.Parent as MenuBarItem; var idx = parent.GetChildrenIndex(_currentMenuBarItem); _currentMenuBarItem = new MenuBarItem(_currentMenuBarItem.Title, new MenuItem [] { new MenuItem("_New", "", CreateAction(_currentEditMenuBarItem, new DynamicMenuItem())) }, _currentMenuBarItem.Parent); _currentMenuBarItem.CheckType = item.checkStyle; parent.Children [idx] = _currentMenuBarItem; } else { MenuItem newMenu = CreateNewMenu(item, _currentMenuBarItem); var menuBarItem = _currentMenuBarItem as MenuBarItem; if (menuBarItem == null) { menuBarItem = new MenuBarItem(_currentMenuBarItem.Title, new MenuItem [] { newMenu }, _currentMenuBarItem.Parent); } else if (menuBarItem.Children == null) { menuBarItem.Children = new MenuItem [] { newMenu }; } else { var childrens = menuBarItem.Children; Array.Resize(ref childrens, childrens.Length + 1); childrens [childrens.Length - 1] = newMenu; menuBarItem.Children = childrens; } DataContext.Menus.Add(new DynamicMenuItemList(newMenu.Title, newMenu)); _lstMenus.MoveDown(); } }; _btnRemove.Clicked = () => { var menuItem = DataContext.Menus.Count > 0 ? DataContext.Menus [_lstMenus.SelectedItem].MenuItem : null; if (menuItem != null) { var childrens = ((MenuBarItem)_currentMenuBarItem).Children; childrens [_lstMenus.SelectedItem] = null; int i = 0; foreach (var c in childrens) { if (c != null) { childrens [i] = c; i++; } } Array.Resize(ref childrens, childrens.Length - 1); if (childrens.Length == 0) { if (_currentMenuBarItem.Parent == null) { ((MenuBarItem)_currentMenuBarItem).Children = null; _currentMenuBarItem.Action = CreateAction(_currentEditMenuBarItem, new DynamicMenuItem(_currentMenuBarItem.Title)); } else { _currentMenuBarItem = new MenuItem(_currentMenuBarItem.Title, _currentMenuBarItem.Help, CreateAction(_currentEditMenuBarItem, new DynamicMenuItem(_currentEditMenuBarItem.Title)), null, _currentMenuBarItem.Parent); } } else { ((MenuBarItem)_currentMenuBarItem).Children = childrens; } DataContext.Menus.RemoveAt(_lstMenus.SelectedItem); } }; _btnMenuBarUp.Clicked = () => { var i = _currentSelectedMenuBar; var menuItem = _menuBar != null && _menuBar.Menus.Length > 0 ? _menuBar.Menus [i] : null; if (menuItem != null) { var menus = _menuBar.Menus; if (i > 0) { menus [i] = menus [i - 1]; menus [i - 1] = menuItem; _currentSelectedMenuBar = i - 1; _menuBar.SetNeedsDisplay(); } } }; _btnMenuBarDown.Clicked = () => { var i = _currentSelectedMenuBar; var menuItem = _menuBar != null && _menuBar.Menus.Length > 0 ? _menuBar.Menus [i] : null; if (menuItem != null) { var menus = _menuBar.Menus; if (i < menus.Length - 1) { menus [i] = menus [i + 1]; menus [i + 1] = menuItem; _currentSelectedMenuBar = i + 1; _menuBar.SetNeedsDisplay(); } } }; _btnUp.Clicked = () => { var i = _lstMenus.SelectedItem; var menuItem = DataContext.Menus.Count > 0 ? DataContext.Menus [i].MenuItem : null; if (menuItem != null) { var childrens = ((MenuBarItem)_currentMenuBarItem).Children; if (i > 0) { childrens [i] = childrens [i - 1]; childrens [i - 1] = menuItem; DataContext.Menus [i] = DataContext.Menus [i - 1]; DataContext.Menus [i - 1] = new DynamicMenuItemList(menuItem.Title, menuItem); _lstMenus.SelectedItem = i - 1; } } }; _btnDown.Clicked = () => { var i = _lstMenus.SelectedItem; var menuItem = DataContext.Menus.Count > 0 ? DataContext.Menus [i].MenuItem : null; if (menuItem != null) { var childrens = ((MenuBarItem)_currentMenuBarItem).Children; if (i < childrens.Length - 1) { childrens [i] = childrens [i + 1]; childrens [i + 1] = menuItem; DataContext.Menus [i] = DataContext.Menus [i + 1]; DataContext.Menus [i + 1] = new DynamicMenuItemList(menuItem.Title, menuItem); _lstMenus.SelectedItem = i + 1; } } }; _btnAddMenuBar.Clicked = () => { var item = EnterMenuItem(null); if (ustring.IsNullOrEmpty(item.title)) { return; } if (MenuBar == null) { _menuBar = new MenuBar(); Add(_menuBar); } var newMenu = CreateNewMenu(item) as MenuBarItem; var menus = _menuBar.Menus; Array.Resize(ref menus, menus.Length + 1); menus [^ 1] = newMenu;
public DynamicMenuBarSample(ustring title) : base(title) { DataContext = new DynamicMenuItemModel(); var _frmDelimiter = new FrameView("Shortcut Delimiter:") { X = Pos.Center(), Y = 3, Width = 25, Height = 4 }; var _txtDelimiter = new TextField(MenuBar.ShortcutDelimiter.ToString()) { X = Pos.Center(), Width = 2, }; _txtDelimiter.TextChanged += (_) => MenuBar.ShortcutDelimiter = _txtDelimiter.Text; _frmDelimiter.Add(_txtDelimiter); Add(_frmDelimiter); var _frmMenu = new FrameView("Menus:") { Y = 7, Width = Dim.Percent(50), Height = Dim.Fill() }; var _btnAddMenuBar = new Button("Add a MenuBar") { Y = 1, }; _frmMenu.Add(_btnAddMenuBar); var _btnMenuBarUp = new Button("^") { X = Pos.Center() }; _frmMenu.Add(_btnMenuBarUp); var _btnMenuBarDown = new Button("v") { X = Pos.Center(), Y = Pos.Bottom(_btnMenuBarUp) }; _frmMenu.Add(_btnMenuBarDown); var _btnRemoveMenuBar = new Button("Remove a MenuBar") { Y = 1 }; _btnRemoveMenuBar.X = Pos.AnchorEnd() - (Pos.Right(_btnRemoveMenuBar) - Pos.Left(_btnRemoveMenuBar)); _frmMenu.Add(_btnRemoveMenuBar); var _btnPrevious = new Button("<") { X = Pos.Left(_btnAddMenuBar), Y = Pos.Top(_btnAddMenuBar) + 2 }; _frmMenu.Add(_btnPrevious); var _btnAdd = new Button(" Add ") { Y = Pos.Top(_btnPrevious) + 2, }; _btnAdd.X = Pos.AnchorEnd() - (Pos.Right(_btnAdd) - Pos.Left(_btnAdd)); _frmMenu.Add(_btnAdd); var _btnNext = new Button(">") { X = Pos.X(_btnAdd), Y = Pos.Top(_btnPrevious), }; _frmMenu.Add(_btnNext); var _lblMenuBar = new Label() { ColorScheme = Colors.Dialog, TextAlignment = TextAlignment.Centered, X = Pos.Right(_btnPrevious) + 1, Y = Pos.Top(_btnPrevious), Width = Dim.Fill() - Dim.Width(_btnAdd) - 1, Height = 1 }; _frmMenu.Add(_lblMenuBar); _lblMenuBar.WantMousePositionReports = true; _lblMenuBar.CanFocus = true; var _lblParent = new Label() { TextAlignment = TextAlignment.Centered, X = Pos.Right(_btnPrevious) + 1, Y = Pos.Top(_btnPrevious) + 1, Width = Dim.Fill() - Dim.Width(_btnAdd) - 1 }; _frmMenu.Add(_lblParent); var _btnPreviowsParent = new Button("..") { X = Pos.Left(_btnAddMenuBar), Y = Pos.Top(_btnPrevious) + 1 }; _frmMenu.Add(_btnPreviowsParent); _lstMenus = new ListView(new List <DynamicMenuItemList> ()) { ColorScheme = Colors.Dialog, X = Pos.Right(_btnPrevious) + 1, Y = Pos.Top(_btnPrevious) + 2, Width = _lblMenuBar.Width, Height = Dim.Fill(), }; _frmMenu.Add(_lstMenus); _lblMenuBar.TabIndex = _btnPrevious.TabIndex + 1; _lstMenus.TabIndex = _lblMenuBar.TabIndex + 1; _btnNext.TabIndex = _lstMenus.TabIndex + 1; _btnAdd.TabIndex = _btnNext.TabIndex + 1; var _btnRemove = new Button("Remove") { X = Pos.Left(_btnAdd), Y = Pos.Top(_btnAdd) + 1 }; _frmMenu.Add(_btnRemove); var _btnUp = new Button("^") { X = Pos.Right(_lstMenus) + 2, Y = Pos.Top(_btnRemove) + 2 }; _frmMenu.Add(_btnUp); var _btnDown = new Button("v") { X = Pos.Right(_lstMenus) + 2, Y = Pos.Top(_btnUp) + 1 }; _frmMenu.Add(_btnDown); Add(_frmMenu); var _frmMenuDetails = new DynamicMenuBarDetails("Menu Details:") { X = Pos.Right(_frmMenu), Y = Pos.Top(_frmMenu), Width = Dim.Fill(), Height = Dim.Fill(2) }; Add(_frmMenuDetails); _btnMenuBarUp.Clicked += () => { var i = _currentSelectedMenuBar; var menuItem = _menuBar != null && _menuBar.Menus.Length > 0 ? _menuBar.Menus [i] : null; if (menuItem != null) { var menus = _menuBar.Menus; if (i > 0) { menus [i] = menus [i - 1]; menus [i - 1] = menuItem; _currentSelectedMenuBar = i - 1; _menuBar.SetNeedsDisplay(); } } }; _btnMenuBarDown.Clicked += () => { var i = _currentSelectedMenuBar; var menuItem = _menuBar != null && _menuBar.Menus.Length > 0 ? _menuBar.Menus [i] : null; if (menuItem != null) { var menus = _menuBar.Menus; if (i < menus.Length - 1) { menus [i] = menus [i + 1]; menus [i + 1] = menuItem; _currentSelectedMenuBar = i + 1; _menuBar.SetNeedsDisplay(); } } }; _btnUp.Clicked += () => { var i = _lstMenus.SelectedItem; var menuItem = DataContext.Menus.Count > 0 ? DataContext.Menus [i].MenuItem : null; if (menuItem != null) { var childrens = ((MenuBarItem)_currentMenuBarItem).Children; if (i > 0) { childrens [i] = childrens [i - 1]; childrens [i - 1] = menuItem; DataContext.Menus [i] = DataContext.Menus [i - 1]; DataContext.Menus [i - 1] = new DynamicMenuItemList(menuItem.Title, menuItem); _lstMenus.SelectedItem = i - 1; } } }; _btnDown.Clicked += () => { var i = _lstMenus.SelectedItem; var menuItem = DataContext.Menus.Count > 0 ? DataContext.Menus [i].MenuItem : null; if (menuItem != null) { var childrens = ((MenuBarItem)_currentMenuBarItem).Children; if (i < childrens.Length - 1) { childrens [i] = childrens [i + 1]; childrens [i + 1] = menuItem; DataContext.Menus [i] = DataContext.Menus [i + 1]; DataContext.Menus [i + 1] = new DynamicMenuItemList(menuItem.Title, menuItem); _lstMenus.SelectedItem = i + 1; } } }; _btnPreviowsParent.Clicked += () => { if (_currentMenuBarItem != null && _currentMenuBarItem.Parent != null) { var mi = _currentMenuBarItem; _currentMenuBarItem = _currentMenuBarItem.Parent as MenuBarItem; SetListViewSource(_currentMenuBarItem, true); var i = ((MenuBarItem)_currentMenuBarItem).GetChildrenIndex(mi); if (i > -1) { _lstMenus.SelectedItem = i; } if (_currentMenuBarItem.Parent != null) { DataContext.Parent = _currentMenuBarItem.Title; } else { DataContext.Parent = ustring.Empty; } } else { DataContext.Parent = ustring.Empty; } }; var _btnOk = new Button("Ok") { X = Pos.Right(_frmMenu) + 20, Y = Pos.Bottom(_frmMenuDetails), }; Add(_btnOk); var _btnCancel = new Button("Cancel") { X = Pos.Right(_btnOk) + 3, Y = Pos.Top(_btnOk), }; _btnCancel.Clicked += () => { SetFrameDetails(_currentEditMenuBarItem); }; Add(_btnCancel); _lstMenus.SelectedItemChanged += (e) => { SetFrameDetails(); }; _btnOk.Clicked += () => { if (ustring.IsNullOrEmpty(_frmMenuDetails._txtTitle.Text) && _currentEditMenuBarItem != null) { MessageBox.ErrorQuery("Invalid title", "Must enter a valid title!.", "Ok"); } else if (_currentEditMenuBarItem != null) { var menuItem = new DynamicMenuItem(_frmMenuDetails._txtTitle.Text, _frmMenuDetails._txtHelp.Text, _frmMenuDetails._txtAction.Text, _frmMenuDetails._ckbIsTopLevel != null ? _frmMenuDetails._ckbIsTopLevel.Checked : false, _frmMenuDetails._ckbSubMenu != null ? _frmMenuDetails._ckbSubMenu.Checked : false, _frmMenuDetails._rbChkStyle.SelectedItem == 0 ? MenuItemCheckStyle.NoCheck : _frmMenuDetails._rbChkStyle.SelectedItem == 1 ? MenuItemCheckStyle.Checked : MenuItemCheckStyle.Radio, _frmMenuDetails._txtShortcut.Text); UpdateMenuItem(_currentEditMenuBarItem, menuItem, _lstMenus.SelectedItem); } }; _btnAdd.Clicked += () => { if (MenuBar == null) { MessageBox.ErrorQuery("Menu Bar Error", "Must add a MenuBar first!", "Ok"); _btnAddMenuBar.SetFocus(); return; } var frameDetails = new DynamicMenuBarDetails(null, _currentMenuBarItem != null); var item = frameDetails.EnterMenuItem(); if (item == null) { return; } if (!(_currentMenuBarItem is MenuBarItem)) { var parent = _currentMenuBarItem.Parent as MenuBarItem; var idx = parent.GetChildrenIndex(_currentMenuBarItem); _currentMenuBarItem = new MenuBarItem(_currentMenuBarItem.Title, new MenuItem [] { }, _currentMenuBarItem.Parent); _currentMenuBarItem.CheckType = item.checkStyle; parent.Children [idx] = _currentMenuBarItem; } else { MenuItem newMenu = CreateNewMenu(item, _currentMenuBarItem); var menuBarItem = _currentMenuBarItem as MenuBarItem; if (menuBarItem == null) { menuBarItem = new MenuBarItem(_currentMenuBarItem.Title, new MenuItem [] { newMenu }, _currentMenuBarItem.Parent); } else if (menuBarItem.Children == null) { menuBarItem.Children = new MenuItem [] { newMenu }; } else { var childrens = menuBarItem.Children; Array.Resize(ref childrens, childrens.Length + 1); childrens [childrens.Length - 1] = newMenu; menuBarItem.Children = childrens; } DataContext.Menus.Add(new DynamicMenuItemList(newMenu.Title, newMenu)); _lstMenus.MoveDown(); } }; _btnRemove.Clicked += () => { var menuItem = DataContext.Menus.Count > 0 ? DataContext.Menus [_lstMenus.SelectedItem].MenuItem : null; if (menuItem != null) { var childrens = ((MenuBarItem)_currentMenuBarItem).Children; childrens [_lstMenus.SelectedItem] = null; int i = 0; foreach (var c in childrens) { if (c != null) { childrens [i] = c; i++; } } Array.Resize(ref childrens, childrens.Length - 1); if (childrens.Length == 0) { if (_currentMenuBarItem.Parent == null) { ((MenuBarItem)_currentMenuBarItem).Children = null; //_currentMenuBarItem.Action = _frmMenuDetails.CreateAction (_currentEditMenuBarItem, new DynamicMenuItem (_currentMenuBarItem.Title)); } else { _currentMenuBarItem = new MenuItem(_currentMenuBarItem.Title, _currentMenuBarItem.Help, _frmMenuDetails.CreateAction(_currentEditMenuBarItem, new DynamicMenuItem(_currentEditMenuBarItem.Title)), null, _currentMenuBarItem.Parent); } } else { ((MenuBarItem)_currentMenuBarItem).Children = childrens; } DataContext.Menus.RemoveAt(_lstMenus.SelectedItem); if (_lstMenus.Source.Count > 0 && _lstMenus.SelectedItem > _lstMenus.Source.Count - 1) { _lstMenus.SelectedItem = _lstMenus.Source.Count - 1; } _lstMenus.SetNeedsDisplay(); SetFrameDetails(); } }; _lstMenus.OpenSelectedItem += (e) => { _currentMenuBarItem = DataContext.Menus [e.Item].MenuItem; if (!(_currentMenuBarItem is MenuBarItem)) { MessageBox.ErrorQuery("Menu Open Error", "Must allows sub menus first!", "Ok"); return; } DataContext.Parent = _currentMenuBarItem.Title; DataContext.Menus = new List <DynamicMenuItemList> (); SetListViewSource(_currentMenuBarItem, true); var menuBarItem = DataContext.Menus.Count > 0 ? DataContext.Menus [0].MenuItem : null; SetFrameDetails(menuBarItem); }; _lstMenus.Enter += (_) => { var menuBarItem = DataContext.Menus.Count > 0 ? DataContext.Menus [_lstMenus.SelectedItem].MenuItem : null; SetFrameDetails(menuBarItem); }; _btnNext.Clicked += () => { if (_menuBar != null && _currentSelectedMenuBar + 1 < _menuBar.Menus.Length) { _currentSelectedMenuBar++; } SelectCurrentMenuBarItem(); }; _btnPrevious.Clicked += () => { if (_currentSelectedMenuBar - 1 > -1) { _currentSelectedMenuBar--; } SelectCurrentMenuBarItem(); }; _lblMenuBar.Enter += (e) => { if (_menuBar?.Menus != null) { _currentMenuBarItem = _menuBar.Menus [_currentSelectedMenuBar]; SetFrameDetails(_menuBar.Menus [_currentSelectedMenuBar]); } }; _btnAddMenuBar.Clicked += () => { var frameDetails = new DynamicMenuBarDetails(null, false); var item = frameDetails.EnterMenuItem(); if (item == null) { return; } if (MenuBar == null) { _menuBar = new MenuBar(); Add(_menuBar); } var newMenu = CreateNewMenu(item) as MenuBarItem; var menus = _menuBar.Menus; Array.Resize(ref menus, menus.Length + 1); menus [^ 1] = newMenu;