private void ManageStylesButton_Click(object sender, RoutedEventArgs e) { var viewModel = new ManageNamingStylesDialogViewModel(_viewModel.NamingStyles, _viewModel.CodeStyleItems.ToList(), _notificationService); var dialog = new ManageNamingStylesInfoDialog(viewModel); if (dialog.ShowDialog().Value == true) { _viewModel.UpdateStyleList(viewModel); } }
internal void UpdateStyleList(ManageNamingStylesDialogViewModel viewModel) { var namingStyles = viewModel.Items.Cast<NamingStyleViewModel>().Select(n => new NamingStyle { ID = n.ID, Name = n.ItemName, Prefix = n.RequiredPrefix, Suffix = n.RequiredSuffix, WordSeparator = n.WordSeparator, CapitalizationScheme = n.CapitalizationSchemes[n.CapitalizationSchemeIndex].Capitalization }); NamingStyles.Clear(); foreach (var style in namingStyles) { NamingStyles.Add(style); } // The existing rules have had their Styles pulled out from underneath them, so // this goes through and resets them. foreach (var rule in CodeStyleItems) { var selectedStyle = rule.SelectedStyle; rule.NamingStyles.Clear(); foreach (var style in namingStyles) { rule.NamingStyles.Add(style); } // Set the SelectedStyle to null and then back to the actual selected // style to trigger the INotifyPropertyChanged event. rule.SelectedStyle = null; if (selectedStyle != null) { rule.SelectedStyle = rule.NamingStyles.Single(n => n.ID == selectedStyle.ID); } } }