public FormatDetailViewModel(IEventAggregator eventAggregator,
                                     ILogger logger,
                                     IFormatService domainService,
                                     IFormatLookupDataService formatLookupDataService,
                                     IDialogService dialogService)
            : base(eventAggregator, logger, domainService, dialogService)
        {
            _formatLookupDataService = formatLookupDataService ?? throw new ArgumentNullException(nameof(formatLookupDataService));

            ChangeEditedFormatCommand = new DelegateCommand <Guid?>(OnChangeEditedFormatExecute);
            SaveItemCommand           = new DelegateCommand(SaveItemExecute, base.SaveItemCanExecute)
                                        .ObservesProperty(() => SelectedItem.Name);

            SelectedItem = CreateWrapper(domainService.CreateItem());

            Formats = new ObservableCollection <LookupItem>();

            UserMode = (!UserMode.Item1, DetailViewState.EditMode, Brushes.LightGray, !UserMode.Item4).ToTuple();
        }