protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); NavigationFrame.Navigating += NavigationFrame_Navigating; NavigationFrame.Navigated += NavigationFrameOnNavigated; SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested; // Get list of patterns var patternCategories = (await Patterns.GetCategoriesAsync()).ToList(); HamburgerMenu.ItemsSource = patternCategories; // Options HamburgerMenu.OptionsItemsSource = new[] { new Option { Glyph = "\xE10F", Name = "About", PageType = typeof(About) } }; HideInfoArea(); NavigationFrame.Navigate(typeof(About)); if (!string.IsNullOrWhiteSpace(e?.Parameter?.ToString())) { var parser = DeepLinkParser.Create(e.Parameter.ToString()); var targetPattern = await Pattern.FindAsync(parser.Root, parser["pattern"]); if (targetPattern != null) { NavigateToPattern(targetPattern); } } }
internal static async Task <Pattern> FindAsync(string category, string name) { var categories = await Patterns.GetCategoriesAsync(); return(categories? .FirstOrDefault(c => c.Name.Equals(category, StringComparison.OrdinalIgnoreCase))? .Patterns .FirstOrDefault(s => s.Name.Equals(name, StringComparison.OrdinalIgnoreCase))); }