public IconMapViewModel(IAppStateService state)
        {
            _state = state;

            _state.PackageChanged += async(s, e) => {
                if (_state.CurrentPackage == null)
                {
                    //_storageFolder = null;
                    VisualStateChanged.Invoke(this, new VisualStateEventArgs {
                        NewState = "NotMedia"
                    });
                    return;
                }
                //_storageFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(_state.CurrentPackage.Name, CreationCollisionOption.OpenIfExists);
                IsMediaPackage = _state.CurrentPackage.IsMediaPackage;
                //VisualStateChanged.Invoke(this, new VisualStateEventArgs { NewState = "HasPackage" });
                var mediaState = (IsMediaPackage) ? "IsMedia" : "NotMedia";
                VisualStateChanged.Invoke(this, new VisualStateEventArgs {
                    NewState = mediaState
                });
            };

            _state.TagChanged += async(s, e) => {
                if (_state.CurrentPackage == null)
                {
                    return;
                }

                if (_state.CurrentTag != null)
                {
                    if (!_state.CurrentPackage.Tags.Contains(_state.CurrentTag.Name.ToLower()))
                    {
                        await _state.CurrentPackage.AddTagAsync(_state.CurrentTag.Id, _state.CurrentTag.Name);
                    }
                    if (IsMediaPackage)
                    {
                        await SetIconLocation(_state.CurrentTag.Id);
                    }
                }
                OpenFile.RaiseCanExecuteChanged();
            };

            this.OpenFile = new RelayCommand(async() => {
                var picker      = new FileOpenPicker();
                picker.ViewMode = PickerViewMode.Thumbnail;
                picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
                picker.FileTypeFilter.Add(".jpg");
                picker.FileTypeFilter.Add(".jpeg");
                picker.FileTypeFilter.Add(".png");


                var file = await picker.PickSingleFileAsync();
                if (file != null)
                {
                    await UpdateIconAsync(file);
                    await _state.CurrentPackage.SaveAsync();
                    _state.IconUpdated();
                }
            },
                                             () => {
                return(_state.CurrentProject != null && CurrentTag != null);
            });
        }