Show back button even if no pages are in back stack

271 Views Asked by At

I'm making a Master/Details app with Template 10. The Master/Details Template 10 sample uses a CommandBar to get full control over when the back button is shown, but I'd like to show the back button on a PageHeader or on the shell. The problem is, since there is no back stack, the button refuses to be shown. How should I handle this?

2

There are 2 best solutions below

2
On

Override the OnNavigatedTo event and set AppViewBackButtonVisibility to Visible in the code-behind file for each page that you want to enable the title bar back button.

Take a look here: http://grogansoft.com/blog/?p=1116

The important part is "AppViewBackButtonVisibility"

if (rootFrame.CanGoBack)
{
    // Show UI in title bar if opted-in and in-app backstack is not empty.
    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = 
        AppViewBackButtonVisibility.Visible;
}

I also suggest you take a look at the AppBar properties. Especially the Visibility which gets or sets the visibility of a UIElement and you could force the visibility of an item:

https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.appbar.aspx

4
On

So I've created a hacky solution to this. Basically I'm adding a dummy value onto the stack so that the back button thinks there is something to go back to.

var entry = new PageStackEntry(typeof(bool), null, null);
Frame.BackStack.Insert(0, entry);

Then I've added a BootStrapper.BackRequested event which sets HandledEventArgs.Handled to true so Template10 doesnt actually pop the page. That way I've got full control over the back stack and the back visibility.