/// <summary> /// 当已经找到目标导航内容且可通过 Content 属性获得时发生,即使此时可能尚未完成加载,目标导航内容触发。 /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="System.Windows.Navigation.NavigationEventArgs"/> instance containing the event data.</param> internal virtual void OnNavigatedTo(object sender, NavigationEventArgs e) { if (NavigationService.NavigationMode == EWellNavigationMode.History) { _guid = NavigationService.CurrentItem.Guid; } if (e.Uri != null) { int queryIndex = e.Uri.ToString().IndexOf('?'); if (queryIndex > 0) { QueryString = new Dictionary <string, string>(); //var ie = from match in e.Uri.ToString().Split('?'). // Where(m => m.Contains('=')). // SelectMany(pr => pr.Split('&')) // where match.Contains('=') // select new KeyValuePair<string, String>( // match.Split('=')[0], // match.Split('=')[1]); var ienumerable = from param in e.Uri.ToString().Substring(queryIndex + 1).Split('&') where param.Contains('=') select new KeyValuePair <string, string>(param.Split('=')[0], param.Split('=')[1]); ienumerable.ToList().ForEach(kvp => QueryString.Add(kvp.Key, kvp.Value)); //ienumerable.ToList().ForEach(kvp => QueryString.Add(kvp.Key, HttpUtility.UrlDecode(kvp.Value))); } } if (NavigationService.NavigationMode == EWellNavigationMode.History) { _pageStates = NavigationService.CurrentItem.PageStates; } }
/// <summary> /// 当请求新导航发生后, 保存当前页面的数据. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="System.Windows.Navigation.NavigatingCancelEventArgs"/> instance containing the event data.</param> internal virtual void OnSaveState(object sender, NavigatingCancelEventArgs e) { _pageStates = new PageStateCollection(); if (AutoSavePageState) { LoadState((sender as Frame).Content as FrameworkElement); } }