private void buttonOk_Click(object sender, RoutedEventArgs e) { try { if (listBoxEnabled.Items.Count == 0) { Dialog.ShowErrorDialog(SilverlightVisualDesigners.Properties.Resources.Error, SilverlightVisualDesigners.Properties.Resources.NoMenuItems, this.gridLayautRoot); return; } // Verificar si el MenuForm tiene título. if (String.IsNullOrEmpty(textBoxTitle.Text)) { Dialog.ShowErrorDialog(SilverlightVisualDesigners.Properties.Resources.Error, SilverlightVisualDesigners.Properties.Resources.TitleFormEmpty, this.gridLayautRoot); return; } // Cambiar el título del MenuForm. menuFormSilverlight.ChangeTitle(textBoxTitle.Text.Trim()); // Eliminar los ítems viejos eliminados si el usuario está editando // el Menuform. foreach (MenuItemSilverlight item in menuItemsDeleted.ToArray()) { menuFormSilverlight.RemoveItem(item); } // Busca los ítems editados y actualiza los datos. foreach (MenuItemSilverlight item in menuFormSilverlight.MenuItemsSilverlight) { if (menuItemsChanged.ContainsKey(item)) { FormMenuItem tempFormMenuItem = menuItemsChanged[item]; item.Text = tempFormMenuItem.Text; item.HelpText = tempFormMenuItem.HelpText; // Remover de la lista para no agregarlo en el siguiente foreach. listBoxEnabled.Items.Remove(tempFormMenuItem); } } // Para cada ítem en listBoxEnable que no haya sido creado, crear un nuevo // FormMenuItem y añadirlo al menú. foreach (FormMenuItem formMenuItem in listBoxEnabled.Items) { MenuItemSilverlight menuItemSilverlightFinded = menuFormSilverlight.FindMenuItemSilverlight(formMenuItem); // Si el formMenuItem es nuevo, crearlo y añadirlo al menú. if (menuItemSilverlightFinded == null) { formMenuItem.Parent = this.menuFormSilverlight.MenuForm; MenuItemSilverlight newMenuItemSilverlight = new MenuItemSilverlight(formMenuItem); newMenuItemSilverlight.MenuParent = this.menuFormSilverlight; this.menuFormSilverlight.AddItem(newMenuItemSilverlight); } int indexFormMenuItem = listBoxEnabled.Items.IndexOf(formMenuItem); int indexMenuItemSilverlightFinded = menuFormSilverlight.MenuItemsSilverlight.IndexOf(menuItemSilverlightFinded); // Si el formMenuItem ha cambiado de posición en el menú, reordenarlo // también en el menú. if (indexMenuItemSilverlightFinded != -1 && indexFormMenuItem != indexMenuItemSilverlightFinded) { MenuItemSilverlight menuItemToPosicionate = menuFormSilverlight.MenuItemsSilverlight[indexMenuItemSilverlightFinded]; menuFormSilverlight.MenuItemsSilverlight.Remove(menuItemToPosicionate); menuFormSilverlight.MenuItemsSilverlight.Insert(indexFormMenuItem, menuItemToPosicionate); } } // Reordenar el ítem para actualizar la visualización. menuFormSilverlight.ReorderItems(); if (Closed != null) { Closed(this, e); } } catch (NullReferenceException error) { Dialog.ShowErrorDialog(SilverlightVisualDesigners.Properties.Resources.UnhandledError, error.Message, this.gridLayautRoot); } }