in XamlControlsGallery/App.xaml.cs [130:221]
private async Task EnsureWindow(IActivatedEventArgs args)
{
// No matter what our destination is, we're going to need control data loaded - let's knock that out now.
// We'll never need to do this again.
await ControlInfoDataSource.Instance.GetGroupsAsync();
Frame rootFrame = GetRootFrame();
ThemeHelper.Initialize();
if (args.PreviousExecutionState == ApplicationExecutionState.Terminated
|| args.PreviousExecutionState == ApplicationExecutionState.Suspended)
{
try
{
await SuspensionManager.RestoreAsync();
}
catch (SuspensionManagerException)
{
//Something went wrong restoring state.
//Assume there is no state and continue
}
Window.Current.Activate();
UpdateNavigationBasedOnSelectedPage(rootFrame);
return;
}
Type targetPageType = typeof(NewControlsPage);
string targetPageArguments = string.Empty;
if (args.Kind == ActivationKind.Launch)
{
targetPageArguments = ((LaunchActivatedEventArgs)args).Arguments;
}
else if (args.Kind == ActivationKind.Protocol)
{
Match match;
string targetId = string.Empty;
switch (((ProtocolActivatedEventArgs)args).Uri?.AbsoluteUri)
{
case string s when IsMatching(s, "(/*)category/(.*)"):
targetId = match.Groups[2]?.ToString();
if (targetId == "AllControls")
{
targetPageType = typeof(AllControlsPage);
}
else if (targetId == "NewControls")
{
targetPageType = typeof(NewControlsPage);
}
else if (ControlInfoDataSource.Instance.Groups.Any(g => g.UniqueId == targetId))
{
targetPageType = typeof(SectionPage);
}
break;
case string s when IsMatching(s, "(/*)item/(.*)"):
targetId = match.Groups[2]?.ToString();
if (ControlInfoDataSource.Instance.Groups.Any(g => g.Items.Any(i => i.UniqueId == targetId)))
{
targetPageType = typeof(ItemPage);
}
break;
}
targetPageArguments = targetId;
bool IsMatching(string parent, string expression)
{
match = Regex.Match(parent, expression);
return match.Success;
}
}
rootFrame.Navigate(targetPageType, targetPageArguments);
if (targetPageType == typeof(NewControlsPage))
{
((Microsoft.UI.Xaml.Controls.NavigationViewItem)((NavigationRootPage)Window.Current.Content).NavigationView.MenuItems[0]).IsSelected = true;
}
else if (targetPageType == typeof(ItemPage))
{
NavigationRootPage.Current.EnsureNavigationSelection(targetPageArguments);
}
// Ensure the current window is active
Window.Current.Activate();
}