/// <summary> /// Default shell FORWARD handler overrides standard FORWARD behavior that navigates to next page /// in the stack. Views or Viewodels can override this behavior by handling the ForwardRequested event /// and setting the Handled property of the ForwardRequestedEventArgs to true. /// </summary> private void RaiseForwardRequested() { var args = new HandledEventArgs(); foreach (var frame in WindowWrapper.Current().NavigationServices.Select(x => x.FrameFacade)) { frame.RaiseForwardRequested(args); if (args.Handled) { return; } } // default to first window NavigationService.GoForward(); }
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member /// <summary> /// This handles all the prelimimary stuff unique to Activated before calling OnStartAsync() /// This is private because it is a specialized prelude to OnStartAsync(). /// OnStartAsync will not be called if state restore is determined. /// </summary> /// <param name="e">The event args.</param> private async Task InternalActivatedAsync(IActivatedEventArgs e) { if (e.Kind == ActivationKind.ShareTarget) { var shareArgs = e as ShareTargetActivatedEventArgs; if (e.PreviousExecutionState == ApplicationExecutionState.Running || e.PreviousExecutionState == ApplicationExecutionState.Suspended) { var frame = new Frame(); frame.Tag = FRAME_IN_SHARE_CONTEXT; Window.Current.Content = frame; var view = WindowWrapper.Current(Window.Current); var navigationService = new NavigationService(frame); view.NavigationServices.Add(navigationService); if (frame.Content == null) { navigationService.Navigate(ShareTargetPage, shareArgs.ShareOperation); } } else { InitRootFrameAndNavigation(); Window.Current.Content = RootFrame; await WindowWrapper.Current(NavigationService).Dispatcher.DispatchAsync(() => { NavigationService.Navigate(ShareTargetPage, shareArgs.ShareOperation); }); } Window.Current.Activate(); return; } // sometimes activate requires a frame to be built, such as after a launch using a toast notification if (Window.Current.Content == null) { InitRootFrameAndNavigation(); await OnInitializeAsync(e); _statusBarService = Injector.Get <IStatusBarService>(); if (UseAppShell && e.PreviousExecutionState != ApplicationExecutionState.Running && e.PreviousExecutionState != ApplicationExecutionState.Suspended && e.Kind != ActivationKind.ShareTarget) { Window.Current.Content = new AppShell( RootFrame, CreateNavigationMenuItems(), CreateBottomDockedNavigationMenuItems()); } } // onstart is shared with activate and launch await OnStartAsync(StartKind.Activate, e); // if the user didn't already set custom content use rootframe if (Window.Current.Content == null) { Window.Current.Content = RootFrame; } UpdateTheme(); // ensure active (this will hide any custom splashscreen) Window.Current.Activate(); }