var tabbedPage = new TabbedPage();
tabbedPage.Children.Add(new ViewA());
var navigationPage = new NavigationPage(new ViewB());
tabbedPage.Children.Add(navigationPage);
// selectedTab=ViewB
tabbedPage.CurrentPage = navigationPage;
// selectedTab={ViewB|ViewC}
await navigationPage.PushAsync(new ViewC());
NavigationService.NavigateAsync("TabbedPage?selectedTab=ViewB/ViewC");
After talking to Dan, it was determined that we are going to change behaviour, if the selected tab is a navigation page, any subsequent pages requested in the uri will be pushed on to the existing stack within the selected tab. If developers wish to retain the existing modal functionality, they can use the useModalNavigation=true parameter.