/// <summary> /// Navigates to a page control. /// </summary> public void NavigateToPageControlByArguments(string arguments) { IPageControl pageControl = null; object parameter = arguments; if (string.IsNullOrEmpty(arguments)) { pageControl = new FavoritesPageControl(); } else { PageInitializationParameters parameters; if (PageInitializationParameters.TryCreate(arguments, out parameters)) { string pageControlName = parameters.GetParameter <string>("pageControl"); if (!string.IsNullOrEmpty(pageControlName)) { // Make sure the type is a valid page control: Type pageControlType = Type.GetType(pageControlName, false); if (pageControlType != null) { pageControl = Activator.CreateInstance(pageControlType) as IPageControl; parameter = parameters; } } } } // Important: to make sure we don't time out opening OBA on ARM devices, load the page control when we idle. var ignored = this.Dispatcher.RunIdleAsync(async() => { await NavigationController.Instance.NavigateToPageControlAsync(pageControl, parameter); }); }
/// <summary> /// Navigates to a page control by parsing an argument string. If the argument string is null or empty, /// then we default to the favorites page. If the string begins with "?" then we try and parse it as a /// deep link. If the string is anything else then we assume it's a search. /// </summary> public void NavigateToPageControlByArguments(string arguments) { IPageControl pageControl = null; object parameter = arguments; if (string.IsNullOrEmpty(arguments)) { pageControl = new FavoritesPageControl(); } else { PageInitializationParameters parameters; if (PageInitializationParameters.TryCreate(arguments, out parameters)) { string pageControlName = parameters.GetParameter <string>("pageControl"); if (!string.IsNullOrEmpty(pageControlName)) { // Make sure the type is a valid page control: Type pageControlType = Type.GetType(pageControlName, false); if (pageControlType != null) { pageControl = Activator.CreateInstance(pageControlType) as IPageControl; parameter = parameters; } } } // We have a query string, but it's not structured in a way we expect, so let's assume it's a search query: if (pageControl == null) { pageControl = new SearchResultsPageControl(); } } // Important: to make sure we don't time out opening OBA on ARM devices, load the page control when we idle. var ignored = this.Dispatcher.RunIdleAsync(async cb => { await NavigationController.Instance.NavigateToPageControlAsync(pageControl, parameter); await this.TryRegisterBackgroundTask(); }); }