/// <summary> /// Añade los menús de un grupo a una opción /// </summary> private void AddMenus(MenuItem mnuItem, MenuGroupViewModelCollection groups) { // Borra los elementos del menú mnuItem.Items.Clear(); // Añade los menús del grupo foreach (MenuGroupViewModel group in groups) { foreach (MenuItemViewModel menu in group.MenuItems) { mnuItem.Items.Add(CreateMenu(menu)); } } // Cambia los estados del menú mnuItem.IsEnabled = mnuItem.Items.Count != 0; }
/// <summary> /// Añade opciones de menú entre dos opciones /// </summary> private void AddMenusBetween(MenuItem mnuParent, Separator mnuStart, Separator mnuEnd, MenuGroupViewModelCollection groups) { int startIndex = mnuParent.Items.IndexOf(mnuStart); int indexEnd = mnuParent.Items.IndexOf(mnuEnd); // Borra las opciones de menú que se hubiesen creado anteriormente DeleteMenusBetween(mnuParent, startIndex, indexEnd); // Añade las opciones de menú foreach (MenuGroupViewModel group in groups) { foreach (MenuItemViewModel menu in group.MenuItems) { // Inserta la opción de menú mnuParent.Items.Insert(startIndex + 1, CreateMenu(menu)); // Incrementa la posición startIndex++; } } // Oculta el separador final si no se ha añadido nada if (groups.Count == 0) { mnuEnd.Visibility = Visibility.Collapsed; } else { mnuEnd.Visibility = Visibility.Visible; } }