/// <summary> /// Reverts the page /// </summary> /// <param name="sender">The button the fired the event.</param> /// <param name="e">Info about the event.</param> private async void RevertButton_Click(object sender, RoutedEventArgs e) { var saveDialog = new SaveChangesDialog() { Title = $"Save changes to Invoice # {ViewModel.InvoiceNumber.ToString()}?", Message = $"Invoice # {ViewModel.InvoiceNumber.ToString()} " + "has unsaved changes that will be lost. Do you want to save your changes?" }; await saveDialog.ShowAsync(); SaveChangesDialogResult result = saveDialog.Result; switch (result) { case SaveChangesDialogResult.Save: await ViewModel.SaveOrder(); ViewModel = await OrderDetailPageViewModel.CreateFromGuid(ViewModel.Id); break; case SaveChangesDialogResult.DontSave: ViewModel = await OrderDetailPageViewModel.CreateFromGuid(ViewModel.Id); break; case SaveChangesDialogResult.Cancel: break; } }
/// <summary> /// Check whether there are unsaved changes and warn the user. /// </summary> /// <param name="e">Info about the navigation operation.</param> protected async override void OnNavigatingFrom(NavigatingCancelEventArgs e) { if (ViewModel.HasChanges) { var saveDialog = new SaveChangesDialog() { Title = $"Save changes to Invoice # {ViewModel.InvoiceNumber.ToString()}?", Message = $"Invoice # {ViewModel.InvoiceNumber.ToString()} " + "has unsaved changes that will be lost. Do you want to save your changes?" }; await saveDialog.ShowAsync(); SaveChangesDialogResult result = saveDialog.Result; switch (result) { case SaveChangesDialogResult.Save: await ViewModel.SaveOrder(); break; case SaveChangesDialogResult.DontSave: break; case SaveChangesDialogResult.Cancel: if (e.NavigationMode == NavigationMode.Back) { Frame.GoForward(); } else { Frame.GoBack(); } e.Cancel = true; // This flag gets cleared on navigation, so restore it. ViewModel.HasChanges = true; break; } } base.OnNavigatingFrom(e); }