/// <summary>
        /// Reverts the page.
        /// </summary>
        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>
        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);
        }