/// <summary> /// Añade los menús de un tipo /// </summary> private void AddMenus(ItemCollection items, MenuModelCollection menus, MenuModel.MenuType type) { if (items != null && menus != null) { foreach (MenuModel menu in menus) { if (menu.Type == type) { MenuItem optMenu = new MenuItem(); // Asigna las propiedades optMenu.Header = menu.Text; optMenu.Icon = new Bau.Libraries.BauMvvm.Views.Tools.ToolsWpf().GetImage(menu.Icon); optMenu.Tag = menu; // Añade el manejador de eventos optMenu.Click += (sender, evntArgs) => { if (sender is MenuItem option && option != null && option.Tag is MenuModel menuItem) { ViewModel.MenuCommand.Execute(menuItem); } }; // Añade el menú items.Add(optMenu); } } } }
/// <summary> /// Carga los menús /// </summary> private void LoadMenus(ContextMenu ctxMenu) { MenuModelCollection menus = ViewModel.GetMenus(); // Elimina los menús antiguos RemoveMenus(ctxMenu.Items); // Añade los menús de opciones AddMenus(ctxMenu.Items, menus, MenuModel.MenuType.Command); AddMenus(SearchMenu(ctxMenu.Items, "mnuItemsNew"), menus, MenuModel.MenuType.NewFile); // Muestra / oculta el separador de las opciones de herramientas foreach (Control optMenu in ctxMenu.Items) { if (optMenu is Separator && optMenu.Name.Equals("mnuOptOptions", StringComparison.CurrentCultureIgnoreCase)) { // Oculta / muestra el separador if (menus == null || menus.Count == 0) { optMenu.Visibility = Visibility.Collapsed; } else { optMenu.Visibility = Visibility.Visible; } } } }