public virtual void Handle(GoBackPageNavigationRequest message)
        {
            // Remove the top frame
            if (message.ToPage == null)
            {
                StackedFrame.GoBack();
            }
            else
            {
                // ReSharper disable once PossibleUnintendedReferenceComparison
                while (StackedFrame.TopFrame != null && StackedFrame.TopFrame.Content != message.ToPage)
                {
                    StackedFrame.GoBack();
                }
            }

            StackedFrame.EnableTop();
        }
        /// <summary>
        /// Used to navigate to a new Frame, e.g. add a frame with a new page
        /// </summary>
        public Page?AddPage(Page page, Page?basePage = null, bool isResizable = true, bool isModal = true)
        {
            // if a base frame is set, go back to it
            if (basePage != null)
            {
                EventAggregator.PublishMessage(new GoBackPageNavigationRequest(basePage));
            }

            // Check if the frame is already created
            var frameKey = StackedFrameExtension.GetFrameKey(page);

            if (StackedFrame.Contains(frameKey))
            {
                return(null);
            }

            // Hide the current property panel
            HidePropertyPanel();

            // if the page is modal, than disable the previous one
            if (isModal)
            {
                StackedFrame.DisableTop();
            }

            if (StackedMode == StackedMode.FullWidth && isResizable && StackedFrame.TopFrame != null)
            {
                StackedFrame.AddSplitter();
            }

            // add the new page
            var frame = CreateFrame();

            StackedFrame.AddFrame(EventAggregator, frame, page);

            if (StackedMode == StackedMode.Resizeable && isResizable)
            {
                StackedFrame.AddSplitter();
            }

            return(page);
        }