Я создаю приложение Master/Details с помощью шаблона 10. Образец шаблона Master/Details 10 использует CommandBar, чтобы получить полный контроль над тем, когда отображается кнопка «Назад», но я хотел бы показать кнопку «Назад» на PageHeader или на оболочка. Проблема в том, что из-за отсутствия заднего стека кнопка отказывается отображаться. Как мне справиться с этим?
Показать кнопку «Назад», даже если в задней стопке нет страниц
Ответы (2)
Переопределите событие OnNavigatedTo и задайте для AppViewBackButtonVisibility значение Visible в файле кода программной части для каждой страницы, на которой вы хотите включить кнопку возврата в строке заголовка.
Посмотрите здесь: http://grogansoft.com/blog/?p=1116.
Важная часть "AppViewBackButtonVisibility"
if (rootFrame.CanGoBack)
{
// Show UI in title bar if opted-in and in-app backstack is not empty.
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
AppViewBackButtonVisibility.Visible;
}
Я также предлагаю вам взглянуть на свойства AppBar. Особенно видимость, которая получает или устанавливает видимость UIElement, и вы можете принудительно установить видимость элемента:
https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.appbar.aspx
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; Template10.Common.BootStrapper.Current.ShowShellBackButton = false; Template10.Common.BootStrapper.Current.UpdateShellBackButton(); Template10.Common.BootStrapper.Current.NavigationService.Refresh();
- person Owen D.; 15.02.2016
Поэтому я создал хакерское решение для этого. По сути, я добавляю фиктивное значение в стек, чтобы кнопка «Назад» думала, что есть к чему вернуться.
var entry = new PageStackEntry(typeof(bool), null, null);
Frame.BackStack.Insert(0, entry);
Затем я добавил событие BootStrapper.BackRequested
, которое устанавливает HandledEventArgs.Handled
в true
, поэтому Template10 на самом деле не открывает страницу. Таким образом, у меня есть полный контроль над задним стеком и задней видимостью.
at Windows.UI.Xaml.Controls.Frame.GoBack() at Template10.Services.NavigationService.FrameFacade.GoBack() at Template10.Services.NavigationService.NavigationService.GoBack() at Template10.Behaviors.NavButtonBehavior.Element_Click(Object sender, RoutedEventArgs e)
- person Owen D.; 21.02.2016