public async Task RestoreSavedNavigation_ClearsOldForwardNavigation() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); var frameSessionState = new Dictionary<string, object>(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => frameSessionState; var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPageWithViewModel), sessionStateService); navigationService.Navigate("Page1", 1); Assert.AreEqual(1, frameSessionState.Count, "VM 1 state only"); navigationService.Navigate("Page2", 2); Assert.AreEqual(2, frameSessionState.Count, "VM 1 and 2"); navigationService.Navigate("Page3", 3); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 3"); navigationService.GoBack(); Assert.AreEqual(2, ((Dictionary<string, object>)frameSessionState["ViewModel-2"]).Count); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 3"); navigationService.Navigate("Page4", 4); Assert.AreEqual(0, ((Dictionary<string,object>)frameSessionState["ViewModel-2"]).Count); Assert.AreEqual(3, frameSessionState.Count, "VM 1, 2, and 4"); }); }
public async Task GoBack_When_CanGoBack() { await ExecuteOnUIThread(() => { var frame = new FrameFacadeAdapter(new Frame()); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); bool resultFirstNavigation = navigationService.Navigate("MockPage", 1); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(1, ((MockPage)frame.Content).PageParameter); Assert.IsFalse(navigationService.CanGoBack()); bool resultSecondNavigation = navigationService.Navigate("Mock", 2); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(2, ((MockPage)frame.Content).PageParameter); Assert.IsTrue(navigationService.CanGoBack()); navigationService.GoBack(); Assert.IsInstanceOfType(frame.Content, typeof(MockPage)); Assert.AreEqual(1, ((MockPage)frame.Content).PageParameter); Assert.IsFalse(navigationService.CanGoBack()); }); }
private void SearchPage_BackRequested(object sender, BackRequestedEventArgs e) { FrameNavigationService.GoBack(); e.Handled = true; }
public async Task Navigate_Forwards_Can_Go_Back_Back_Button_Visible() { await DispatcherHelper.ExecuteOnUIThread(() => { var eventAggregator = new EventAggregator(); var frame = new FrameFacadeAdapter(new Frame(), eventAggregator); var sessionStateService = new MockSessionStateService(); sessionStateService.GetSessionStateForFrameDelegate = (currentFrame) => new Dictionary<string, object>(); var navigationService = new FrameNavigationService(frame, (pageToken) => typeof(MockPage), sessionStateService); var deviceGestureService = new DeviceGestureService(eventAggregator); deviceGestureService.UseTitleBarBackButton = true; var navigationManager = SystemNavigationManager.GetForCurrentView(); // Reset back button visibility before running, can't do this in TestInitialize because CoreWindow sometimes isn't ready SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); navigationService.Navigate("Mock", 1); Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); navigationService.Navigate("Mock", 2); Assert.AreEqual(AppViewBackButtonVisibility.Visible, navigationManager.AppViewBackButtonVisibility); Assert.IsTrue(navigationService.CanGoBack()); navigationService.GoBack(); Assert.AreEqual(AppViewBackButtonVisibility.Collapsed, navigationManager.AppViewBackButtonVisibility); navigationService.GoForward(); Assert.AreEqual(AppViewBackButtonVisibility.Visible, navigationManager.AppViewBackButtonVisibility); }); }
/// <summary> /// Operations on clicking back button /// </summary> public void BackButtonClicked() { FrameNavigationService.GoBack(); }