/// <summary> /// Navigation From /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void Frame_Navigating(object sender, NavigatingCancelEventArgs e) { var frame = sender as Windows.UI.Xaml.Controls.Frame; if (frame == null) return; var naviArgs = new NavigationArgs { Content = frame.Content, NavigationMode = (Models.NavigationMode) Enum.Parse(typeof (Models.NavigationMode), e.NavigationMode.ToString()), Parameter = e.SourcePageType, Uri = frame.BaseUri }; if(StaticFunctions.BaseContext != null) { StaticFunctions.InvokeIfRequiredAsync(StaticFunctions.BaseContext, para => _eventAggregator.GetEvent<NavigatingEvent>().Publish(naviArgs), null); } else { _eventAggregator.GetEvent<NavigatingEvent>().Publish(naviArgs); } }
/// <summary> /// Navigation To /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void Frame_Navigated(object sender, NavigationEventArgs e) { var naviArgs = new NavigationArgs { Content = e.Content, NavigationMode = (Models.NavigationMode) Enum.Parse(typeof (Models.NavigationMode), e.NavigationMode.ToString()), Parameter = e.Parameter, Uri = e.Uri }; //프레임의 세션 스테이트 값 복구 var frameState = SuspensionManager.SessionStateForFrame(_frame); var pageKey = PAGE + _frame.BackStackDepth; if (naviArgs.NavigationMode == Models.NavigationMode.New) { // Clear existing state for forward navigation when adding a new page to the // navigation stack var nextPageKey = pageKey; var nextPageIndex = _frame.BackStackDepth; while (frameState.Remove(nextPageKey)) { nextPageIndex++; nextPageKey = PAGE + nextPageIndex; } _frameSessionState = new Dictionary<string, object>(); frameState[pageKey] = _frameSessionState; } else { _frameSessionState = (Dictionary<String, Object>)frameState[pageKey]; } if (StaticFunctions.BaseContext != null) { StaticFunctions.InvokeIfRequiredAsync(StaticFunctions.BaseContext, para => _eventAggregator.GetEvent<NavigatedEvent>().Publish(naviArgs), null); } else { _eventAggregator.GetEvent<NavigatedEvent>().Publish(naviArgs); } }