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