Beispiel #1
0
 public BreadCrumbNavigation(IEventAggregator eventAggregator, Page page)
 {
     FrameKey   = StackedFrameExtension.GetFrameKey(page);
     FrameTitle = page.GetValue(Page.TitleProperty).ToString();
     Command    = new DynamicCommand(
         (sender) => eventAggregator.PublishMessage(new GoBackPageNavigationRequest(page)));
 }
        /// <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);
        }