Exemple #1
0
        /// <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;
            }
        }
Exemple #2
0
 /// <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);
     }
 }