private void ImagePropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var image = (ImageModel)sender;

            if (e.PropertyName == nameof(image.Preset))
            {
                if (!_presetService.PresetExists(image.Preset))
                {
                    throw new InvalidOperationException("Cannot use a preset that does not exist.");
                }

                CanRemovePreset = image.Preset != _presetService.DefaultPreset;
            }

            CanCreateImage = !image.HasErrors;
        }
        public PresetViewModel(PresetModel preset, IPresetService presetService, IDialogService dialogService)
        {
            BrowseBiosCommand = new DelegateCommand <Window>(BrowseBiosAction);
            BrowseUefiCommand = new DelegateCommand <Window>(BrowseUefiAction);
            ResetBiosCommand  = new DelegateCommand(ResetBiosAction);
            ResetUefiCommand  = new DelegateCommand(ResetUefiAction);
            SaveCommand       = new DelegateCommand <IClosable>(SaveAction, CanSaveAction);
            CancelCommand     = new DelegateCommand <IClosable>(CancelAction);

            _preset        = preset;
            _presetService = presetService;
            _dialogService = dialogService;

            IsNewPreset    = !_presetService.PresetExists(_preset);
            NameReadOnly   = !IsNewPreset;
            NameBackground = IsNewPreset ? _BackgroundWhite : _BackgroundGray;

            Preset = new PresetModel();
            Preset.PropertyChanged += PresetPropertyChanged;
            Preset.GetValues(_preset);

            WindowTitle = IsNewPreset ? "Add Preset" : "Edit Preset";
        }
 public PresetNotExistError(IPresetService svc, PresetModel value, [CallerMemberName] string propertyName = null)
 {
     HasError     = !svc.PresetExists(value);
     ErrorMessage = "This preset does not exist.";
     PropertyName = propertyName;
 }