internal void ShowNextPage(PageControl pageControl,
                                   object additionalData             = null,
                                   PageTransitionType transitionType = PageTransitionType.SlideAndFade)
        {
            Log($"{nameof(MainWindowViewModel)}.{nameof(ShowNextPage)}: Start");

            if (pageControl.Equals(Enumerations.PageControl.None))
            {
                Log($"  The page control type \"{pageControl}\" is unhandled.");
            }

            UserControl newPageControl = GetPageUserControl(pageControl, additionalData);

            if (newPageControl is null)
            {
                Log($"  The user control came back null for page type: {pageControl}");

                return;
            }

            Log($"  The page type is \"{pageControl}\".");

            if (CurrentPage.Equals(pageControl) == true)
            {
                return;
            }

            CurrentPage = pageControl;

            // The stack is only really used for going back to a previous page.
            m_PageList.Push(newPageControl);

            m_PageTransition.TransitionType = transitionType;
            m_PageTransition.ShowPage(newPageControl);

            ShowStatusMessage(string.Empty, false);

            Log($"{nameof(MainWindowViewModel)}.{nameof(ShowNextPage)}: End");
        }