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); }); }