protected override CollectionItemViewModel DeleteImp()
        {
            var deletedItem = base.DeleteImp();

            if (deletedItem != null)
            {
                NotifyOthers(deletedItem.InnerObject, OperationType.Delete);
                Navigations.CloseCurrentView();
            }
            return(deletedItem);
        }
        private async void Save()
        {
            LoaderState.ToBusy();
            var dto = new ImageGalleryDto
            {
                CollectionItemId = _collectionItemId,
                Images           = Images.Where(x => !x.IsSelected).Select(x => x.InnerObject).ToList()
            };
            await _dataProvider.SaveImageGalleryAsync(dto);

            LoaderState.ToIdle();
            Navigations.CloseCurrentView();
        }
        public ImageGallaryEditorViewModel(IImageGalleryViewProvider dataProvider)
        {
            _dataProvider           = dataProvider;
            SaveCommand             = new RelayCommand(Save, CanUndo);
            CancelCommand           = new RelayCommand(() => Navigations.CloseCurrentView(), () => LoaderState.IsIdle);
            AddImageCommand         = new RelayCommand(AddImage, () => LoaderState.IsIdle);
            DeleteImageCommand      = new RelayCommand(DeleteSelectedImages, IsAnythingSelected);
            UndoCommand             = new RelayCommand(Undo, CanUndo);
            SelectAllCommand        = new RelayCommand(SelectAll);
            DeSelectAllCommand      = new RelayCommand(DeSelectAll);
            SaveToFilesCommand      = new RelayCommand(() => SaveToFiles("imageFile"), IsAnythingSelected);
            SaveForInstagramCommand = new RelayCommand(() => SaveToFiles("zipFile"), IsAnythingSelected);

            _progress = new Progress <ImageDto>(dto =>
            {
                var vm = new ImageItemViewModel(dto, Navigations);
                Images.Add(vm);
            });

            Images = new ObservableCollection <ImageItemViewModel>();
        }