public override void OnNavigatedFrom(Dictionary <string, object> viewModelState, bool suspending)
        {
            base.OnNavigatedFrom(viewModelState, suspending);

            if (viewModelState != null)
            {
                AddEntityStateValue("stateErrorsCollection", SelectedState.GetAllErrors(), viewModelState);
            }
        }
        // When Update button is pressed
        private async void OnUpdateState()
        {
            string errorMessage = string.Empty;
            bool   isCreating   = false;

            SelectedState.ValidateProperties();
            var updateErrors = SelectedState.GetAllErrors().Values.SelectMany(pc => pc).ToList();

            if (updateErrors.Count == 0)
            {
                try {
                    LoadingData = true;
                    if (SelectedState.Id == 0)
                    {
                        isCreating = true;
                        CrudResult = await _stateRepository.CreateStateAsync(SelectedState);

                        SelectedState = JsonConvert.DeserializeObject <List <State> >(CrudResult.Content.ToString()).FirstOrDefault <State>();
                    }
                    else
                    {
                        CrudResult = await _stateRepository.UpdateStateAsync(SelectedState);
                    }
                }
                catch (ModelValidationException mvex) {
                    // there were server-side validation errors
                    DisplayStateErrorMessages(mvex.ValidationResult);
                }
                catch (HttpRequestException ex) {
                    ErrorMessageTitle = isCreating ? ErrorMessagesHelper.CreateAsyncFailedError : ErrorMessagesHelper.UpdateAsyncFailedError;
                    ErrorMessage      = ex.Message;
                }
                finally {
                    LoadingData = false;
                    RunAllCanExecute();
                }

                if (ErrorMessage != null && ErrorMessage != string.Empty)
                {
                    MessageDialog messageDialog = new MessageDialog(ErrorMessage, ErrorMessageTitle);
                    await messageDialog.ShowAsync();

                    _navService.GoBack();
                }
            }
            else
            {
                RunAllCanExecute();
            }
        }