private bool SaveEditCharacter() { bool saved = false; if (_characterEditViewModel.CharacterModel != null) { if (String.IsNullOrWhiteSpace(_characterEditViewModel.Name)) { _dialogService.ShowConfirmationDialog("Required Field", "Name is required.", "OK", null, null); } else { _characterEditViewModel.CharacterModel.Id = _selectedCharacter.CharacterModel.Id; _compendium.UpdateCharacter(_characterEditViewModel.CharacterModel); _selectedCharacter = new CharacterViewModel(_characterEditViewModel.CharacterModel); if (_characterEditViewModel.IsNew) { _selectedCharacter.SetupNewlyCreatedCharacter(); } CharacterListItemViewModel oldListItem = _characters.FirstOrDefault(x => x.CharacterModel.Id == _characterEditViewModel.CharacterModel.Id); if (oldListItem != null) { if (_characterSearchService.SearchInputApplies(_characterSearchInput, _selectedCharacter.CharacterModel)) { oldListItem.UpdateModel(_characterEditViewModel.CharacterModel); } else { _characters.Remove(oldListItem); } } _characterEditViewModel = null; _editHasUnsavedChanges = false; SortCharacters(); _compendium.SaveCharacters(); OnPropertyChanged(nameof(SelectedCharacter)); OnPropertyChanged(nameof(EditingCharacter)); OnPropertyChanged(nameof(IsEditingCharacter)); OnPropertyChanged(nameof(HasUnsavedChanges)); saved = true; } } return(saved); }