private void SaveChangesCommand_Execute(object parameter) { // Remember settings that failed to save int iFailedSettings = 0; // First apply the setting values from the editors back to their setting items. foreach (SectionViewModel svm in _sections.Values) { foreach (CategoryViewModel cvm in svm.CategoryItems) { foreach (SettingItemViewModel sivm in cvm.SettingItems) { // Find setting SettingItem item = _manager.GetSetting(sivm.SettingDescriptor.Identifier, sivm.SettingDescriptor.SettingItem.Name); // Try to apply the value object value = null; try { value = sivm.TypeEditor.Value; // If that succeeded, apply the value item.SetValue(value); } catch (Exception ex) { string message = string.Format(Properties.Resources.SettingSaveError + "\n\n{1}", item.Name, ex.Message); MessageBox.Show(message, "Fehler beim Speichern einer Einstellung", MessageBoxButton.OK, MessageBoxImage.Error); iFailedSettings++; } } } } // Second, save the settings. _manager.SaveSettings(); string message2 = (iFailedSettings == 0) ? Properties.Resources.SavingSettingsSuccess : Properties.Resources.SavingSettingsWithErrors; MessageBox.Show(message2, "Speichern", MessageBoxButton.OK, MessageBoxImage.Information); }